原因の可能性についてご教授をお願いいたします。
[httpd.conf設定]
LoadModule rewrite_module modules/mod_rewrite.so
RewriteEngine On
RewriteRule ^po(.*)/$ /test.php?id=$1 [L]
※ apache再起動の結果は、Syntax OKとなっています。
[仕様]
http://ドメイン/po1234 ⇒ http://ドメイン/test.php?id=1234
[結果]
Not Found
The requested URL /po1234 was not found on this server.
以下の2行が必要です。
RewriteRule ^po(.+)/$ /test.php?id=$1 [L] RewriteRule ^po(.+)$ /test.php?id=$1 [L]
パラメータが数字だけなら、下記のようにした方がいいでしょう。
RewriteRule ^po([0-9]+) /test.php?id=$1 [L]
httpd.confに書くなら頭に / が必要
RewriteRule ^/po(.*)/$ /test.php?id=$1 [L]
同じ内容を .htaccess に書く場合は、頭の / があっちゃだめだけどね。
ありがとうございます。
httpd.conf、.htaccess双方でも結果は変わりませんでした。
結果として、ブラウザのURL表示に変化がなく「Not Found」となりましたので、
そもそもApacheのRewriteが有効になっていないか、Rewriteディレクティブ設定が有効出ない可能性が考えられます。なんらかのコマンドで正しいかどうかをしらべる手段はないでしょうか?
以下の2行が必要です。
RewriteRule ^po(.+)/$ /test.php?id=$1 [L]
RewriteRule ^po(.+)$ /test.php?id=$1 [L]
パラメータが数字だけなら、下記のようにした方がいいでしょう。
RewriteRule ^po([0-9]+) /test.php?id=$1 [L]
でもなんもかわらんかったとおもいます。
たぶんレジストリのしわざかもしれません
レジストリがげいいんでできないかもしれません。
ありがとうございます。
回答1と同じ通り、状況は変わりませんでした。
仰られる「レジストリ」とはどこを懸念されているのでしょうか?
本当に記述そのままですか?
記述例に似てるだけで実際は違うとかだと原因がわかりにくいですね。
まず、簡単な例を作ってリダイレクト自体ができるのかどうかを調べてみてください。
たまに出来ないレンタルサーバーとかもありますので。
あと気になったのは、静的に換える場合の仕様って
http://ドメイン/test.php?id=1234 ⇒ http://ドメイン/po1234
のように逆でないとおかしいと思いますよ
?でパラメータがついたら、それは動的URLだと思うのですが、なにか勘違い等されてないか
ご確認ください。
ありがとうございました。
ご教授いただいた方法でも状況は変わりませんでした。[L]を[L,R]にしても"Not Found"でしたので、
おそらくRewrite処理すらされていないものと考えます。
RewriteRuleが処理(登録)されていることを確認するコマンドとかはないでしょうか?