Apache htaccess重写忽略Url编码
我刚刚进行了更新,目前正在Apache的htaccess文件中设置所有301重定向。所有重定向都使用当前格式Apache htaccess重写忽略Url编码,apache,.htaccess,mod-rewrite,redirect,Apache,.htaccess,Mod Rewrite,Redirect,我刚刚进行了更新,目前正在Apache的htaccess文件中设置所有301重定向。所有重定向都使用当前格式 Redirect 301 /old+url+4343/ http://www.newsite.com/new-url-here/ 但是我注意到很多旧的URL都有一些编码——主要是带有标题问题的。Apaches htaccess似乎忽略了编码,或者只是失败,什么也不做。例如,这不起作用 Redirect 301 /old+question+title%3F/ http://www.new
Redirect 301 /old+url+4343/ http://www.newsite.com/new-url-here/
但是我注意到很多旧的URL都有一些编码——主要是带有标题问题的。Apaches htaccess似乎忽略了编码,或者只是失败,什么也不做。例如,这不起作用
Redirect 301 /old+question+title%3F/ http://www.newsite.com/new-question-title%3F/
在这种情况下%3F应该是问号(?)。我可以正常访问该网站,如果我复制和粘贴的网址-这工作刚刚好
我也尝试过在htaccess中设置字符集,看看它是否起作用,但不幸的是,它没有起作用,这就是代码
AddDefaultCharset UTF-8
关于Apache为什么会忽略url编码以及我如何覆盖它,有什么想法吗?
重定向
指令非常有限,最好对正则表达式功能和标记(如NE
)使用RewriteRule
:
RewriteEngine On
RewriteRule ^old\+question\+title\x3F/ /new-question-title\%3F/ [L,NC,NE,R=302]
顺便说一句,这是一条经过适当测试的规则,因此我希望在此给出一个否决的理由hi@anubhava,谢谢你的回答-不幸的是,它似乎不起作用(顺便说一句,我没有否决)。htaccess文件似乎像以前一样忽略了规则。我需要转义目录url中的任何斜杠吗?你能告诉我你使用的完整url和这个htaccess的位置吗?