人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

apacheのRewrite機能を使用してURLを静的に変更したいのですが、エラーが発生して困っています。
原因の可能性についてご教授をお願いいたします。

[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.

●質問者: cochoo
●カテゴリ:インターネット ウェブ制作
✍キーワード:Apache http:// httpd mod_rewrite NOT FOUND
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● Galapagos
●23ポイント

以下の2行が必要です。

RewriteRule ^po(.+)/$ /test.php?id=$1 [L]
RewriteRule ^po(.+)$ /test.php?id=$1 [L]

パラメータが数字だけなら、下記のようにした方がいいでしょう。

RewriteRule ^po([0-9]+) /test.php?id=$1 [L]
◎質問者からの返答

ありがとうございました。

ご教授いただいた方法でも状況は変わりませんでした。[L]を[L,R]にしても"Not Found"でしたので、

おそらくRewrite処理すらされていないものと考えます。

RewriteRuleが処理(登録)されていることを確認するコマンドとかはないでしょうか?


2 ● y-kawaz
●23ポイント

httpd.confに書くなら頭に / が必要

RewriteRule ^/po(.*)/$ /test.php?id=$1 [L]

同じ内容を .htaccess に書く場合は、頭の / があっちゃだめだけどね。

◎質問者からの返答

ありがとうございます。

httpd.conf、.htaccess双方でも結果は変わりませんでした。

結果として、ブラウザのURL表示に変化がなく「Not Found」となりましたので、

そもそもApacheのRewriteが有効になっていないか、Rewriteディレクティブ設定が有効出ない可能性が考えられます。なんらかのコマンドで正しいかどうかをしらべる手段はないでしょうか?


3 ● toki-2131
●22ポイント

以下の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と同じ通り、状況は変わりませんでした。

仰られる「レジストリ」とはどこを懸念されているのでしょうか?


4 ● pretaroe
●22ポイント

本当に記述そのままですか?

記述例に似てるだけで実際は違うとかだと原因がわかりにくいですね。

まず、簡単な例を作ってリダイレクト自体ができるのかどうかを調べてみてください。

たまに出来ないレンタルサーバーとかもありますので。

あと気になったのは、静的に換える場合の仕様って

http://ドメイン/test.php?id=1234 ⇒ http://ドメイン/po1234

のように逆でないとおかしいと思いますよ

?でパラメータがついたら、それは動的URLだと思うのですが、なにか勘違い等されてないか

ご確認ください。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ