Apache htaccess重写忽略Url编码

时间:2015-04-14 08:00:38

标签: apache .htaccess mod-rewrite redirect

我刚刚更新了,我目前正在Apache的htaccess文件中设置所有301重定向。所有重定向都使用当前格式。

Redirect 301 /old+url+4343/ http://www.newsite.com/new-url-here/

但是我注意到很多旧网址都有一些编码 - 主要是标题问题。 Apaches htaccess似乎忽略了编码或只是失败而没有做任何事情。例如,这不起作用;

Redirect 301 /old+question+title%3F/ http://www.newsite.com/new-question-title%3F/

在这种情况下,%3F应该是问号(?)。如果我复制并粘贴网址,我可以正常访问该网站 - 这很好。

我也尝试在htaccess中设置Charset以查看是否有效但不幸的是它没有,这就是代码;

AddDefaultCharset UTF-8

关于为什么Apache会忽略url编码以及如何覆盖它的任何想法?

1 个答案:

答案 0 :(得分:0)

Redirect指令非常有限,最好将RewriteRule用于正则表达式功能和NE之类的标记:

RewriteEngine On
RewriteRule ^old\+question\+title\x3F/ /new-question-title\%3F/ [L,NC,NE,R=302]