我需要通过htaccess重定向多个带%字符的网址。
目前的行是:
RewriteEngine On
RewriteCond% {REQUEST_FILENAME}!-F
RewriteCond% {REQUEST_FILENAME}!-D
RewriteRule ^-.*$ url [R=301,L]
RewriteRule ^%20.*$ url redirection [R=301,L]
RewriteRule ^%22.*$ url redirection [R=301,L]
RewriteRule ^images/files/myname%is-fyle.pdf.*$ url redirection [R=301,L]
From these lines, the redirects do not work are:
RewriteRule ^%20.*$ url redirection [R=301,L]
RewriteRule ^%22.*$ url redirection [R=301,L]
RewriteRule ^images/files/myname%is-fyle.pdf.*$ url redirection [R=301,L]
关于我做错的任何想法?我的知识几乎是基本的,不太明白为什么URL中的%重定向不起作用。
我研究过使用标志作为noescape [NE],但我没有设法从字符%的URL中获取重定向。
(htaccess的te行中的“url redirection”是我不能发布的论坛的新网址。)
谢谢。
9月23日:我感谢那些帮助我解决这个问题的人。但是,具有特殊字符(%和?)和大写字母的URL不会转发。
我复制并粘贴了我的htaccess文件的完整代码:
此处:http://pastebin.com/yXGQiQzd
我在这篇文章How to Redirect to a url containing an anchor (#)?中看到,显然答案已经公布。但是,问题在于使用([])作为规则。例如:([a-zA-Z0-9 -_] +)
就我而言,例如,这些网址:
images / SchoolContry / wef / pdf / SomethingOfFiles / ca?da.pdf背后的原因? 图像/故事/金钱/备忘录Matric?cula 2010.doc
知道为什么带有特殊字符(%和?),空格和大写字母的网址没有重定向?
感谢。
答案 0 :(得分:0)
URL编码字符在通过重写引擎发送之前会被解码。这意味着您需要使用已解码的字符来匹配而不是编码的字符。所以:
RewriteRule ^%20.*$ url redirection [R=301,L]
你想要:
RewriteRule ^\ .*$ url redirection [R=301,L]
和for:
RewriteRule ^%22.*$ url redirection [R=301,L]
你想要:
RewriteRule ^\".*$ url redirection [R=301,L]