WinXPに、XAMPPでアパッチ+PHPの開発環境を作っています。


mod_rewriteを使うため、
apache/conf/httpd.confで、

LoadModule rewrite_module modules/mod_rewrite.so

のコメントアウト解除をしましたが、どうにもうまくいきません。

mod_rewriteを有効にする際、
他に注意する点がありましたらご教授ください。

やりたいことは、.htaccessで、

RewriteEngine on
RewriteRule ^([0-9]+).html$ index.cgi?keyword=$1 [L]

という処理です。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/02/15 17:45:01
  • 終了:--

回答(2件)

id:tezcello No.1

tezcello回答回数460ベストアンサー獲得回数692006/02/15 19:45:10

ポイント60pt

上手くいかないのは、rewriteモジュールの組み込みなのか、rewrite の動作なのかどちらでしょうか?


まずは、apache 起動時のログを良く見てみるといいでしょう。


ルールの書換え後のアドレスは、フルパスで書くようになっていと思いますが大丈夫ですか?

RewriteBase が無くてもサイト構成によっては問題無いでしょうけど。

id:webuser

ご回答ありがとうございます。

その後の調査で、mod_rewrite自体は

うまく機能していることが分かりました。

例えば、

http:/〜/abc.html→http:/〜/index.cgi?keyword=abc

にアクセスします。

しかし、下記のように、%が含まれる場合は、

403が返ってきてしまいます。

http:/〜/%A4%A2.html→403Forbidden

この原因はどこにあるのでしょうか。

ちなみに、スクリプトは、Linuxで正常に稼動しています。

2006/02/15 23:32:09
id:tezcello No.2

tezcello回答回数460ベストアンサー獲得回数692006/02/16 08:45:36

ポイント60pt

mod_rewrite は無事に動いているなら、.htaccess の方だけですね。


では、403は .htaccess の記述が原因なのかのチェックをします。


例のルールでは 0123.html のように数字だけの基本部+html の場合、index.cgi に keyword という名前のパラメータとしてその数字を渡すという事ですよね?

0123.html の場合、キチンと渡せてますか?

また、%A4%A2.html は対象外なので無視されるはずですが、

このルールを記入した .htaccess が存在する場合は403で、無い場合は問題なく表示できるのでしょうか?

%A4%A2.html ということは、デコードすると あ.html になると思うのですが、これで正しく表示できるのとは思えないのですが。

id:webuser

ご回答ありがとうございます。

大変失礼しました。

RewriteRuleに変更を加えておりました。

今検証中のものは次のようになります。

RewriteRule ^(.+).html$ http://127.0.0.1/index.cgi?keyword=$1 [L]

この実行結果は、

----------------------------------------------------------------------

Forbidden

You don’t have permission to access http://127.0.0.1/■¢.html on this server.

----------------------------------------------------------------------

となり、■の部分は、太陽のような文字化けになっています。

このソースを見ると、

----------------------------------------------------------------------

Forbidden

You don’t have permission to access http://127.0.0.1/あ.html on this server.

----------------------------------------------------------------------

になっています。

参考までに、0123.htmlでは、index.cgi?keyword=0123が動作しました。

想像ですが、.htaccessで勝手にURLデコードされていると思ってしまいました。

これは何が原因でしょうか。

2006/02/16 12:36:10

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません