有几个链接指向我管理的网站,网站管理员错误地在域名和网页名称之间包含空格:
www.domain.com/ page.html
当用户点击时,会显示
www.domain.com/%20page.html
我想使用mod_rewrite将匹配重定向到错误的地址到正确的地址,但我的重写规则无法正常工作。我没有成功尝试以下内容:
rewriterule ^\%20page.html$ /page.html [R=301,L] rewriterule ^.20page.html$ /page.html [R=301,L]
如何写一条规则来抓住这个地址?我想保留PageRank并且不会因链接断开而受到惩罚,我无法让网站管理员修复他的链接
答案 0 :(得分:7)
使用字面空格,使用反斜杠进行转义,因此它不会结束正则表达式:
RewriteRule ^\ page.html$ /page.html [R=301,L]
答案 1 :(得分:2)
将空间放在RewriteRule中。可能在mod_rewrite看到它的时候,它已经被解码了。
答案 2 :(得分: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]