Apache mod_rewrite与包含百分号的URL不匹配

时间:2011-09-24 23:39:01

标签: regex apache .htaccess mod-rewrite

如果规则:

RewriteRule myurl /newurl

匹配

http://localhost:8080/test/xxxmyurlyyy

为什么不匹配?

http://localhost:8080/test/xxxmyurly%EDyy

修改

我刚刚发现utf-8编码的作品就好了。如果我宁愿使用%C3%AD而不是%ED,那也没关系。我仍然需要启用unicode。

1 个答案:

答案 0 :(得分:1)

似乎匹配得很好。鉴于此:

RewriteEngine On
RewriteLog /tmp/rewrite.log
RewriteLogLevel 5
RewriteRule myurl /stackexchange/foo.html

如果我拿这个:

curl http://localhost/test/xxmyurly%EDyy

我在/tmp/rewrite.log中看到了这个:

(3) applying pattern 'myurl' to uri '/test/xxxmyurly?yy'
(2) rewrite '/test/xxxmyurly?yy' -> '/serverfault/foo.html'

我完全得到了我的期望(一份内容为“这是测试”的文件)。

我怀疑你的问题不是你想象的那样。启用RewriteLog和 查看显示的内容,然后在此处发布结果。另外,看到更多 (理想情况下,所有)您的配置也会有所帮助。