2

有几个链接指向我管理的网站,其中网站管理员错误地在域名和页面名称之间包含了一个空格:

    www.domain.com/page.html

当用户点击时,这给出

    www.domain.com/%20page.html

我想使用 mod_rewrite 将命中重定向到不正确的地址到正确的地址,但是我的重写规则不起作用。我尝试了以下方法但没有成功:

    重写 ^\%20page.html$ /page.html [R=301,L]
    rewriterule ^.20page.html$ /page.html [R=301,L]

如何编写规则来捕获此地址?我想保留 PageRank 并且不会因链接损坏而受到处罚,而且我无法让网站管理员修复他的链接。

4

3 回答 3

7

使用文字空间,用反斜杠转义,这样它就不会结束正则表达式:

RewriteRule ^\ page.html$ /page.html [R=301,L]
于 2009-04-09T15:14:26.740 回答
2

将空格放在您的 RewriteRule 中。可能在 mod_rewrite 看到它的时候,它已经被解码了。

于 2009-04-09T15:12:42.563 回答
0

您可以使用类似这样的方法来删除所有控制字符:

RewriteRule ^([^\x00-\x19\x7F]*)[\x00-\x19\x7F]+(.*) /$1$2 [L,R=301]

对于您的额外空格字符:

RewriteRule ^([^\x00-\x20\x7F]*)[\x00-\x20\x7F]+(.*) /$1$2 [L,R=301]
于 2009-04-15T15:03:00.607 回答