- PR -

URL変更の仕方を教えてください。設定間違ってますか?

1
投稿者投稿内容
volvic
会議室デビュー日: 2006/08/20
投稿数: 17
投稿日時: 2006-08-20 14:29
Apatch mod_rewriteを使ってPHPなどの動的ファイルを
静的ファイルに見せかけたいと思っております。

http://xyz.jp/aaa.php?p=1&val=100

http://xyz.jp/1.html?val=100

となるように設定しようと思っているのですが、うまくいきません。
(?val=100を変換しない処理がうまくいかないのです。)
以下のRewriteRuleではどこがいけないのでしょうか。

RewriteRule ^/p/([0-9]+).html?val=([0-9]) /aaa.php?p=$1&val=$2

また、http://xyz.jp/aaa.php?p=1&val=100 へのアクセスがあったときに
はhttp://xyz.jp/1.html?val=100 へアクセスするようにしようと思っています。

RewriteRule ^/aaa.php?p=([0-9]+)&val=([0-9]) /q/$1$2 [R]
ではどこがいけないのでしょうか。

丸1日かけてやってもうまくいきません。
どれかひとつ、一言でもご教授ください。

[ メッセージ編集済み 編集者: volvic 編集日時 2006-08-20 14:42 ]

[ メッセージ編集済み 編集者: volvic 編集日時 2006-08-20 23:55 ]

[ メッセージ編集済み 編集者: volvic 編集日時 2006-08-20 23:56 ]
SHR
ベテラン
会議室デビュー日: 2006/06/15
投稿数: 99
投稿日時: 2006-08-21 13:38
>静的ファイルに見せかけたいと思っております。
どちらも動的に見えますが…。

>http://xyz.jp/aaa.php?p=1&val=100
>↓
>http://xyz.jp/1.html?val=100

>また、http://xyz.jp/aaa.php?p=1&val=100 へのアクセスがあったときに
>はhttp://xyz.jp/1.html?val=100 へアクセスするようにしようと思っています。
は同じ事では?

>RewriteRule ^/p/([0-9]+).html?val=([0-9]) /aaa.php?p=$1&val=$2
>RewriteRule ^/aaa.php?p=([0-9]+)&val=([0-9]) /q/$1$2 [R]

/p/ と /q/ はどこから出てきたのでしょう?


適当に読み替えて書いてみます。
下記、mod_rewriteやapacheのVerによって違うかも知れない点をご了承下さい。
※Apache2.2.3で確認しております。

RewriteRuleを書く時、Rewrite前側に?を書くと、正規表現として認識されてしまいます。
>RewriteRule ^/p/([0-9]+).html?val=([0-9]) /aaa.php?p=$1&val=$2
この場合、.htmlval=…か.htmval=…にマッチとなってしまいます。

で、上記を踏まえて対策を考えたのですが、困った事にうまくいきません。
RewriteLogを出して確認して解ったのですが、どうやら?以降は切り捨てられている模様。
?をエスケープしても%3Fにエンコードしてもダメでした。
※そういえばURIに%2Fがあった時のmod_rewriteが効かない件があったけれど、
 それも関係しているのかな?

解決策は……見当たりませんorz
見せ掛けはともかく、アクセスできるようにするだけなら、
RedirectMatchを使えば済みそうですが。
volvic
会議室デビュー日: 2006/08/20
投稿数: 17
投稿日時: 2006-08-21 14:41
SHRさん、ありがとうございます!
返信の仕方がわからずにPMを何通か送ってしまいました。
申し訳ありませんでした。

q->pです。すみません。間違ってました。

?以降は受け付けてくれないのでしょうか。
困りました、、
RewriteMatchですか、私が読んだドキュメントには
書いてなかったので気づきませんでした。

あまり変わってないですが、↓のように設定しましたが、だめです。
RewriteMatch ^/aaa.php?p=([0-9]+)&val=([0-9]) /p/$1$2

RewriteMatchでも?の問題にならないですかね?
SHR
ベテラン
会議室デビュー日: 2006/06/15
投稿数: 99
投稿日時: 2006-08-21 16:21
>RewriteMatchでも?の問題にならないですかね?
すみません、ダメみたいですね… orz
確認せずに申し訳ないです。

後はaaa.phpで対応するとか…(汗
すみません、ちょっと他に思い浮かばないです。
volvic
会議室デビュー日: 2006/08/20
投稿数: 17
投稿日時: 2006-08-21 19:40
調べた結果、RewriteRuleではquery stringのマッチはできないそうです。
%{QUERY_STRING}とRewriteCondを使ってできないかと考えました。
できそうでしょうか。
1

スキルアップ/キャリアアップ(JOB@IT)