2011-09-24 39 views
1

如果规则:Apache的mod_rewrite的不匹配URL包含百分号

RewriteRule myurl /newurl 

匹配:

http://localhost:8080/test/xxxmyurlyyy 

为什么它不匹配呢?

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

编辑:

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

回答

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和 查看显示内容,然后在此处发布结果。此外,看到更多的 (理想情况下,所有)您的配置也会有所帮助。

+0

嗨,骗子。当URL不匹配时没有日志输出。可能是一个错误。我使用Apache 2.2 for Windows 64位。 – Eduardo

+0

根本没有输出*?我需要看到你的完整配置,以帮助进一步;即使模式不匹配,你仍然期望看到来自'mod_rewrite'的日志输出。至少,你的'access_log'是否显示请求? – larsks

+0

根本没有输出。 Access_log也不起作用。这是我完整的配置:http://notepad.cc/flelsazbu54 – Eduardo