转义htaccess重定向中的特殊字符

时间:2017-04-19 17:00:42

标签: apache .htaccess

我在htaccess中遇到了一些301重定向问题。原始文件名/ URL被赋予特殊字符,我不太确定如何正确地逃脱。 URL的结构如下:

 company%E2%80%99s-person-of-interest-aman%E2%80%99s-most-prestigious-%E2%80%9Cacademy-of-leaders-award%E2%80%9D

等同于:

 company’s-person-of-interest-aman’s-most-prestigious-“academy-of-leaders-award”

我尝试过像

这样的事情
 company\'-person-of-interest-aman\'s-most-prestigious-\"Cacademy-of-leaders-award\" 

但那并没有奏效。我错过了什么?

1 个答案:

答案 0 :(得分:0)

这是一个UTF-8字符,并不等同于\'#或\"在服务器端,因为'并且'根据编码规范是不同的字符。你可以做以下两件事之一:

1)您可以简单地重命名文件,将ASCII兼容字符替换为UTF-8字符

2)直接在重定向字符串中使用百分比编码值。

而不是

company\'-person-of-interest-aman\'s-most-prestigious-\"Cacademy-of-leaders-award\"

DO

company%E2%80%99s-person-of-interest-aman%E2%80%99s-most-prestigious-%E2%80%9Cacademy-of-leaders-award%E2%80%9C

编辑:在写答案的同时,我也意识到,即使您的字符是ASCII,您重定向网址的原始表达也不会完全匹配:

 company\'-person-of-interest-aman\'s-most-prestigious-\"Cacademy-of-leaders-award\" 

应该是

 company\'s-person-of-interest-aman\'s-most-prestigious-\"academy-of-leaders-award\"