mod_rewriteについて質問です。

日本語文字列をurl_encodeしたものを引数に含めたURLをmod_rewriteで転送させようとするとエラーになります。

http://www.hoge.com/%82%A0.html
を以下にしたいのです。
http://www.hoge.com/entry.php?ID=%82%A0

.htaccessの設定ファイルは以下の通りです。

Options -Indexes +SymLinksIfOwnerMatch
<IfModule mod_rewrite.c>

<IfModule mod_dir.c>
DirectoryIndex index.php
</IfModule>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*).html$ entry.php?ID=$1 [L]

</IfModule>

引数が英数字だとうまく転送されています。例えば

http://www.hoge.com/aaa.html

です。
これはどのように解決できますでしょうか。
みなさんよろしくお願い致します。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2007/07/01 04:15:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:t_shiono No.1

回答回数256ベストアンサー獲得回数22

ポイント60pt

手元の環境では、次のようなentry.phpを作成したところ、


<html>
  <body>
    
id :
</body> </html>

http://XXXX/%E3%81%82%E3%81%84%E3%81%86.html

できちんと、

id : あいう

と表示されました。

エラーになるとのことですが、どのようなエラーでしょうか?

entry.phpの実行によるエラーではないでしょうか?

id:tokyosmash

回等ありがとうございます。また、わざわざ試していただきありがとうございます。


エラーの内容ですが、ブラウザは404を返してきます。そして「引数が英数字」だとエラーは発生しません。

Urlencodeされた文字を引数に含めている場合のみエラーになります。


エラーの詳細はApacheのrewrite.logに(コメント欄に追記しております)書かれていると思うのですが、3行目辺りから怪しい文が出てきます。


別の環境(Xrea)では問題なく転送できるのですが。local(Win)上にXAMPPで構築したApacheではエラーになってしまいます。設定が必要なのでしょうか。


何か些細な事でもいいのでヒントを頂けるとありがたいです。お気軽に回等下さい。みなさんよろしくお願い致します。

2007/06/24 21:42:50
  • id:tokyosmash
    ちなみにApacheのrewrite.logは以下の通りです。

    (2) init rewrite engine with requested uri /あ.html
    (1) pass through /あ.html
    (2) init rewrite engine with requested uri /error/HTTP_FORBIDDEN.html.var
    (1) pass through /error/HTTP_FORBIDDEN.html.var
    (2) init rewrite engine with requested uri /error/include/top.html
    (1) pass through /error/include/top.html
    (2) init rewrite engine with requested uri /error/include/bottom.html
    (1) pass through /error/include/bottom.html
    (2) init rewrite engine with requested uri /error/contact.html.var
    (1) pass through /error/contact.html.var
  • id:tokyosmash
    追記です。

    ローカル(Win)の環境だと上記の通り上手くいきません。
    XREAだと問題なく動いています。
    Apacheの設定の問題でしょうか?
  • id:tezcello
    Win 特有の問題らしいです。

    ログに
    > (1) pass through /あ.html
    なんでデコードされたものが乗っている事自体がおかしい気もしますが。
    勝手にデコードしてしまうのかもしれません。
    Shift-JIS ではなく、UTF-8 や EUC でも同じ結果なのでしょうか?
  • id:tokyosmash
    tezcelloさんありがとうございます。


    そうなんですよね。
    ログにデコード文字が書いてあるのは気になってました。

    一応utf-8などでも試してみましたが、同じ結果になりました。
    Apacheの設定の問題ならちょっと手に負えないんですよね。
    Xamppのデフォルト状態からいじれませんし。

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

トラックバック

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

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

回答リクエストを送信したユーザーはいません