.htaccess内容如下:
RewriteEngine On
RewriteBase /
RewriteRule .*?\.htm$ index.html
我想实现的是以.htm结尾的页面重写到index.html我测试了二条网址:第一条:http://127.0.0.1/张学良简介.htm  // 可以成功重写到index.html第二条:http://127.0.0.1/%D5%C5%D1%A7%C1%BC%BC%F2%BD%E9.htm //失败如下:提示:You don't have permission to access /ÕÅѧÁ¼¼ò½é.htm on this server.不知道是什么原因啊?我只是把"张学良简介"用了函数urlencode函数编码了一下就不行了。请问如何修改啊?是什么原因呢?
我用的是apach服务器

解决方案 »

  1.   

    我也迷惑这个问题呢,据说是apache禁止中文。
      

  2.   

    http://119.179.254.5/中国.htm这样可以大家可以测试一下,这是我的服务器
      

  3.   

    Rewrite只接收UTF8 
    IE和FireFox对中文URL的编码不同,要注意. 
    页面中的链接最好是UTF8编码的,如果是GB2312,一定会有问题.所以一定要iconv utf-8然后再Urlencode. RewriteRule ^(.*).htm$ index.html 
      

  4.   

    单单是正则的话能不能只匹配一个结尾?\.htm$ 就得了,别管前面的
      

  5.   


    测试了一下,这位老兄的基本正确echo urlencode('张学良简介');UTF8下:%E5%BC%A0%E5%AD%A6%E8%89%AF%E7%AE%80%E4%BB%8B
    ANSI下:%D5%C5%D1%A7%C1%BC%BC%F2%BD%E9多字节和双字节编码的结果不一样
    %E5%BC%A0%E5%AD%A6%E8%89%AF%E7%AE%80%E4%BB%8B.htm能正确解析至于Rewrite只接收UTF8?这个到不得而知!
      

  6.   

    关于字符集的问题,楼主可以将apache的默认字符集改为gb2312
    然后看看你的那能不能通过
    如果通,这说明和apache字符集设定有关,不一定仅支持utf-8
    测后给个反馈
      

  7.   

    谢谢关注:
    apache的默认字符集改为gb2312 
    已经测试了,还是不行,可以证明8楼的朋友说法是正确的,即apach的rewrite功能只能接收utf-8格式的字符,反之就算规则写对,也会出现我一楼所提出的问题另外请fxs_2008帮忙看一下这个正是如何完成:http://topic.csdn.net/u/20091219/11/3105168e-6c2f-4137-8e6f-68b9f0b9a0b4.html