我需要通过 htaccess 重定向多个带有 % 字符的 URL。
当前行是:
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 中的“url 重定向”是论坛的新 URL,我无法发布)。
谢谢。
9月23日:我感谢那些帮助我解决这个问题的人。但是,带有特殊字符(% 和 ?)和大写字母的 URL 不会转发。
我复制并粘贴 htaccess 文件的完整代码:
这里:http://pastebin.com/yXGQiQzd
我在这篇文章中看到How to Redirect to a url containing an anchor (#)?显然答案已发布。然而,问题在于规则中使用([])。示例为:([a-zA-Z0-9-_]+)
以我为例,这些 URL:
images/SchoolContry/wef/pdf/SomethingOfFiles/ca?da.pdf 背后的原因 图片/故事/金钱/备忘录 Matric?cula 2010.doc
知道为什么带有特殊字符(% 和 ?)、空格和大写字母的 URL 不会重定向吗?
谢谢。
最佳答案
URL 编码的字符在通过重写引擎发送之前会被解码。这意味着您需要使用解码的字符来匹配而不是编码的字符。所以对于:
RewriteRule ^%20.*$ url redirection [R=301,L]
你想要:
RewriteRule ^\ .*$ url redirection [R=301,L]
以及:
RewriteRule ^%22.*$ url redirection [R=301,L]
你想要:
RewriteRule ^\".*$ url redirection [R=301,L]
关于.htaccess - HTACCESS 中带有字符 % 的 URL 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18788308/