- - PR -
URL変更の仕方を教えてください。設定間違ってますか?
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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 ] |
|
投稿日時: 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を使えば済みそうですが。 |
|
投稿日時: 2006-08-21 14:41
SHRさん、ありがとうございます!
返信の仕方がわからずにPMを何通か送ってしまいました。 申し訳ありませんでした。 q->pです。すみません。間違ってました。 ?以降は受け付けてくれないのでしょうか。 困りました、、 RewriteMatchですか、私が読んだドキュメントには 書いてなかったので気づきませんでした。 あまり変わってないですが、↓のように設定しましたが、だめです。 RewriteMatch ^/aaa.php?p=([0-9]+)&val=([0-9]) /p/$1$2 RewriteMatchでも?の問題にならないですかね? |
|
投稿日時: 2006-08-21 16:21
>RewriteMatchでも?の問題にならないですかね?
すみません、ダメみたいですね… orz 確認せずに申し訳ないです。 後はaaa.phpで対応するとか…(汗 すみません、ちょっと他に思い浮かばないです。 |
|
投稿日時: 2006-08-21 19:40
調べた結果、RewriteRuleではquery stringのマッチはできないそうです。
%{QUERY_STRING}とRewriteCondを使ってできないかと考えました。 できそうでしょうか。 |
1