具有特殊字符的重定向规则

时间:2012-01-25 12:21:45

标签: apache .htaccess internationalization http-status-code-301 url-encoding

我想使用重定向301规则(即我希望能够避免重写规则)来重定向包含特殊字符的网址(例如é,à,...),例如

重定向301 /éxàmplehttp://mydomain.com/example

然而,简单地添加它不起作用。有什么建议?

2 个答案:

答案 0 :(得分:2)

如何在Windows系统上解决此问题

在Windows上,您可以使用Notepad ++正确输入Unicode字符。启动Notepad ++后,从“编码”菜单中选择“无编号的UTF-8编码”,然后输入Unicode字符并保存文件。

要确保正确保存字符,请下载适用于Windows的十六进制编辑器,并确保将é保存为c3 89,并将à另存为c3 a0 }。

之前的回复,我认为您使用的是Linux系统

很可能在.htaccess文件中没有正确保存Unicode字符。

尝试此命令时会得到什么:

grep -o .x.mple .htaccess | od -t x1 -c

如果正确保存了Unicode字符,你应该得到这个。

0000000  c3  a9  78  c3  a0  6d  70  6c  65  0a  65  78  61  6d  70  6c
        303 251   x 303 240   m   p   l   e  \n   e   x   a   m   p   l
0000020  65  0a
          e  \n
0000022

如果您安装了xxdhd,则可以获得更整洁的输出以进行故障排除:

$ grep -o .x.mple .htaccess | xxd -g1
0000000: c3 a9 78 c3 a0 6d 70 6c 65 0a 65 78 61 6d 70 6c  ..x..mple.exampl
0000010: 65 0a                                            e.

在所有输出中,您可以看到é被保存为二进制数:c3 89。您可以从http://www.fileformat.info/info/unicode/char/e9/index.htm看到以UTF-8编码的é确实是两个字节:0xC3和0xA9。

同样,UTF-8格式的à为:0xC3 0xA0。见http://www.fileformat.info/info/unicode/char/e0/index.htm。您也可以在输出中看到这些代码。

答案 1 :(得分:0)

这些应该可行,但这取决于你必须检查的一些事情:

  • 您是否启用了mod_alias?如果没有,您应该运行a2enmod mod_alias
  • 您是否有重定向到example页面? (重定向在别名之前应用)

然后,您可以尝试将字符设置为由浏览器编码,而不是将其转换为UTF-8,例如%C3%A9用于é等。