有没有办法通过.htaccess重定向包含智能引号的网址?我正在使用以下规则。只有最后一个似乎有效:
RewriteRule ^8-%E2%80%9Crules%E2%80%9D-for-social-advertising$ /8-rules-for-social-advertising [R=301,L]
RewriteRule ^8-“rules”-for-social-advertising$ /8-rules-for-social-advertising [R=301,L]
RewriteRule ^8-%25E2%2580%259Crules%25E2%2580%259D-for-social-advertising$ /8-rules-for-social-advertising [R=301,L]
当我浏览http://blog.eloqua.com/8-“rules”-for-social-advertising/或http://blog.eloqua.com/8-%E2%80%9Crules%E2%80%9D-for-social-advertising时,它不会被重定向。
但如果我去http://blog.eloqua.com/8-%25E2%2580%259Crules%25E2%2580%259D-for-social-advertising一切正常。
我做错了什么?非常感谢你的帮助!
答案 0 :(得分:3)
你是对的,它正在滑过你提供的规则。
原因是因为%E2%80%9C和%E2%80%9D(也称为microsoft smartquotes)所代表的unicode字符已经变成了Apache中的unicode表示。因此,您需要正确匹配表示apache中这些字符的字节流。
为了正确重定向这样的网址:
http://www.example.com/8-%E2%80%9Crules%E2%80%9D-for-social-advertising
你会使用这样的规则:
http://www.example.com/8-\xE2\x80\x9Crules\xE2\x80\x9D-for-social-advertising