3

我需要通过 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 的 te 行中的“url 重定向”是我无法发布的论坛的新 URL)。

谢谢你。

9 月 23 日:我感谢那些帮助我解决这个问题的人。但是,带有特殊字符(% 和 ?)和大写字母的 URL 不会转发。

我复制并粘贴了我的 htaccess 文件的完整代码

这里: http: //pastebin.com/yXGQiQzd

我在这篇文章中看到如何重定向到包含锚点 (#) 的 url?显然答案已发布。但是,问题在于规则的使用([])。例如:([a-zA-Z0-9-_]+)

例如,在我的情况下,这些 URL:

images/SchoolContry/wef/pdf/SomethingOfFiles/ca?da.pdf 背后的原因 images/stories/Money/memo Matric?cula 2010.doc

知道为什么带有特殊字符(% 和 ?)、空格和大写字母的 URL 不会重定向吗?

谢谢。

4

1 回答 1

0

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]
于 2013-09-13T14:59:17.380 回答