リダイレクトする必要のある古いURLがいくつかありますが、残念ながら一部にスペースが含まれています。 redirect.php
スクリプトにリダイレクトしますが、何らかの理由でURLにスペースまたは%20
が含まれている場合は、リダイレクト後のURLにこの%20が無限回繰り返されます。これは、httpサブドメインまたはローカルで正しく動作するサーバーをHTTPSに切り替えたときにのみ発生します。.htaccessリダイレクトには、URLにHTTPSのスペースが含まれている場合、複数の%20が表示されます
私のルールは次のとおりです。
RewriteRule ^/?(gallery\.php)(.*) /redirect.php$2 [R,L]
これが正しく動作:
gallery.php?place=name
- >redirect.php?place=name
しかし、URLにスペースが含まれる場合、この問題が発生した:
gallery.php?place=long%20name
- >
redirect.php?place=long%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name
私は[B]
と[NE]
フラグが、ノー成功を追加してみました。私が行方不明のものはありますか?
更新1: htaccessの他のルールを除外するために、私は新しい例を作成しました。
RewriteEngine On
RewriteRule ^/?(index\.php)(.*) /$2 [NE,R,L]
すべてです:私は空のディレクトリ/test/
、内部に含まれている空のファイル/test/index.php
と/test/.htaccess
ファイルは、あるを持っています。それでも動作は異常です。例: /test/index.php?a=xyは期待通りに動作しますが、/test/index.php?a=x%20yは%20の記号を繰り返します。
興味深いことに、うまくいくはずです。それは私のために、あなたの正確なコードで、SSLを使用して動作します。 .htaccessに他のリライト/リダイレクトがありますか?そうであれば、あなたの質問に全部を投稿すれば、いくらかの光を放つかもしれません。 – Vrac
@Vrac私は質問を更新し、ライブの例を追加しました – Ziki
あなたはこのサーバーを制御しますか? httpd.confに 'LogLevel alert rewrite:trace6'を設定し、Apacheエラーログを出力します。 – Vrac