Categories

A sample text widget

Etiam pulvinar consectetur dolor sed malesuada. Ut convallis euismod dolor nec pretium. Nunc ut tristique massa.

Nam sodales mi vitae dolor ullamcorper et vulputate enim accumsan. Morbi orci magna, tincidunt vitae molestie nec, molestie at mi. Nulla nulla lorem, suscipit in posuere in, interdum non magna.

Apache Rewrite:URL中含有汉字和全角字符的转向问题

最近网站改版,有很多之前的URL要重新转向到新版本的URL上,而且要一一对应。大家都知道,网站改版时的URL转向一般要用301 Moved Permanently,如果是英文或者数字格式的URL,好办,直接把规则写进.htaccess里面就行了,但是如果URL里含有汉字,全角表点符号怎么办?直接写进去是不能正常工作的。举个例子:
Redirect 301 /(jarfee).html http://localhost/jarfee-sbg-case.html

这个例子里面,要把http://localhost/(jarfee).html用301转向到http://localhost/jarfee-sbg-case.html ,语法都是正确的,但是有可能会不能正常工作,我想,是不是要把全角的()转换成ANSI编码(%A3%A8%A3%A9)呢?然后试了下:

Redirect 301 /%A3%A8jarfee%A3%A9.html http://localhost/jarfee-sbg-case.html
但还是不能正常工作,又想了下是不是要用转义字符(\)把URL里面的(%)转义下?然后试了试:

Redirect 301 /\%A3\%A8jarfee\%A3\%A9.html http://localhost/jarfee-sbg-case.html
事实证明了,不行。

会不会是要把()转成UTF-8编码(%EF%BC%88%EF%BC%89)呢?立即试下:

Redirect 301 /%EF%BC%88jarfee%EF%BC%89.html http://localhost/jarfee-sbg-case.html
不行。。。添加转义字符,还不行:
Redirect 301 /\%EF\%BC\%88jarfee\%EF\%BC\%89.html http://localhost/jarfee-sbg-case.html

绝望了。。。看到我一同学Frank gAo在MSN上,于是请教他,跟他解释了半天,总算明白了我的意思(他对MS IIS比较熟悉)然后怎么修改也不行,最后他说,你把文件保存成unicode格式试下?

另存成unicode编码格式,打开页面:

Internal Server Error

汗了一下, 服务器都 down 了。郁闷。。。

如果保存成 UTF-8呢?因为最开始文件默认的编码是ANSI的,所以UTF-8是最后的机会了。 另存成UTF-8编码格式,打开页面:

301 Moved Permanently Succeed…

成功了~~

后记,一般.htaccess在保存的时候用UTF-8的格式,无论URL里面有什么样的字符,都能顺利跳转了。具体是,用文字编辑器打开.htaccess,然后另存下,在对话框下面的格式选择里,选”UTF-8″就行了。

1 comment to Apache Rewrite:URL中含有汉字和全角字符的转向问题

Leave a Reply

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>