0

誰かがこれで私を助けてくれることを願っています。

これは私の .htaccess ファイルです:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

次のような URL は正常に書き換えられます。

http://jobs2.local/main/out/16339404/http://www.google.com/

ただし、URL の最後の部分 ( http://www.google.com/の部分) をエンコードすると、404 エラーが発生します。

http://jobs2.local/main/out/16339404/http%3A%2F%2Fwww.google.com%2F

犯人は %2F のようですが、なぜこれが起こっているのかわかりません。

問題が何であるか知っている人はいますか?

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

4

1 に答える 1

0

私はこれを理解しました。

問題は、Apacheが%2Fを好まないことです。

解決策は、Webサイトのhttpd.confのVirtualHostエントリに「AllowEncodedSlashesOn」を追加することです。

<VirtualHost *:80>
    AllowEncodedSlashes On
    ServerName jobs2.local
    ...
</VirtualHost>

私はこれをテストしました、そしてそれは期待通りに働きます。

于 2012-10-23T17:30:33.583 に答える