37

我需要设置一些 RewriteRules 来重定向其中有空格的 URL。我试过这个:

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

...但它不起作用。放入空格而不是 %20 会导致 500 内部服务器错误。如何添加空间?

4

5 回答 5

57

尝试在你的空间前面放一个 \ 来逃避它。

RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L]
于 2009-01-04T10:45:40.980 回答
13

您可以使用 \ 来逃避空间

RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L]
于 2009-01-04T10:46:09.093 回答
11

如果您想避免转义每个空格的复杂性(例如,如果您计划自动生成此文件),您可以简单地使用引号:

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

此外,这些引号可用于包含任何一个预期的参数:

RewriteRule "^article/with spaces.html$" "/article/without_spaces.html" [R=301,L]
于 2013-01-14T16:15:07.503 回答
9
RewriteRule ^article/with[\ |%2520]spaces.html$ /article/without_spaces.html [R=301,L]

第一个选项替换空格,而第二个选项替换 url 中硬编码的 %20。

于 2012-04-29T17:44:28.553 回答
1

啊,我找到了解决方案:使用正则表达式样式显示空格:

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

虽然,我怀疑这也会匹配所有其他空白字符(制表符等),但我认为这不会有太大问题。

于 2009-01-04T10:45:07.550 回答