URLにスペースを含むmod_rewrite
-
03-07-2019 - |
質問
スペースを含むURLをリダイレクトするために、RewriteRulesを設定する必要があります。私はこれを試しました:
RewriteRule ^article/with%20spaces.html$ /article/without_spaces.html [R=301,L]
...しかし、機能しません。 %20の代わりにスペースを入れると、500内部サーバーエラーが発生します。スペースを追加するにはどうすればよいですか
解決
スペースをエスケープするには、スペースの前に\を入れてみてください。
RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L]
他のヒント
\でスペースをエスケープできます
RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L]
各スペースをエスケープする複雑さを回避したい場合(たとえば、このファイルを自動的に生成する場合)、引用符を使用できます:
RewriteRule "^article/with spaces.htmlRewriteRule "^article/with spaces.html<*>quot; "/article/without_spaces.html" [R=301,L]
quot; /article/without_spaces.html [R=301,L]
さらに、これらの引用符を使用して、予想される引数を1つ含めることができます。
<*>RewriteRule ^article/with[\ |%2520]spaces.html$ /article/without_spaces.html [R=301,L]
最初のオプションはスペースを置き換え、2番目のオプションはURL内のハードコードされた%20を置き換えます。
ああ、私は解決策を見つけました:正規表現スタイルを使用してスペースを表示します:
RewriteRule ^article/with\sspaces.html$ ...
ただし、これは他のすべての空白文字(タブなど)にも一致すると思われますが、これは大きな問題になるとは思いません。
所属していません StackOverflow