2009-01-04 144 views
33

我需要設置一些RewriteRules來重定向一個URL,該URL中有一個空格。我試過這個:帶有空格的mod_rewrite

RewriteRule ^article/with%20spaces.html$ /article/without_spaces.html [R=301,L] 

...但它不起作用。放入空格而不是%20會導致500內部服務器錯誤。我如何添加空間?

回答

53

嘗試在你的空間前放一個\來逃避它。

RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L] 
+2

乾杯!我應該想到它會是這樣簡單的事情。 – nickf 2009-01-04 10:58:59

1

啊,我已經找到了解決辦法:使用正則表達式的風格展現出空間:

RewriteRule ^article/with\sspaces.html$ ... 

雖然,我懷疑這會匹配所有其它空白字符太(標籤等),但我認爲這不會有什麼問題。

12

你可以只用一個\

RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L] 
8
RewriteRule ^article/with[\ |%2520]spaces.html$ /article/without_spaces.html [R=301,L] 

躲避空間中的第一選項替換空間,而第二替換URL中的硬編碼的20%。

+0

這應該得到最高票數。可惜!時間取決於選票。 – 2016-04-01 08:46:20

6

如果你想避免逃逸每個空間的複雜性(例如,如果你打算讓這個文件自動生成),你可以簡單地使用引號:

RewriteRule "^article/with spaces.html$" /article/without_spaces.html [R=301,L] 

而且,這些報價可以用來包住任何一個預期的論點:

RewriteRule "^article/with spaces.html$" "/article/without_spaces.html" [R=301,L]