网址中带有空格的 mod_rewrite

Posted

技术标签:

【中文标题】网址中带有空格的 mod_rewrite【英文标题】:mod_rewrite with spaces in the urls 【发布时间】:2010-09-29 11:25:44 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

干杯!我应该认为它会像那样简单。【参考方案2】:

你可以用 \

转义空格
RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L]

【讨论】:

【参考方案3】:

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

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

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

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

【讨论】:

这是最好的答案【参考方案4】:
RewriteRule ^article/with[\ |%2520]spaces.html$ /article/without_spaces.html [R=301,L]

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

【讨论】:

这应该得到最高票数。可惜!时间取决于投票。【参考方案5】:

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

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

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

【讨论】:

以上是关于网址中带有空格的 mod_rewrite的主要内容,如果未能解决你的问题,请参考以下文章

vbscript 禁止出现网址中带有sci-hub.tw网址

Git添加一个名称中带有空格的文件夹

Laravel 5 多语言网站,网址中带有语言前缀

元素中带有空格的 Bash 数组

名称中带有空格的 SQLite 列

Matlab错误中带有空格的路径