htaccess重写规则%20错误

时间:2015-03-05 18:40:11

标签: apache .htaccess mod-rewrite

我使用以下重写代码来美化网址http://localhost/about.php?about_key=test%20testerhttp://localhost/about/test%20tester

代码

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html

RewriteRule ^about/(\w+)$ about_user.php?about_key=$1

但是我找到了一个找不到对象的错误,一段时间后我发现URL中的%20是问题所在。所以我的问题是,我该如何做到这一点?

1 个答案:

答案 0 :(得分:0)

在URI与重写规则匹配之前,像%20这样的URI中的东西会被解码。这意味着%20会变成一个空格,而你的正则表达式\w不会与空格相匹配。尝试将正则表达式更改为:

RewriteRule ^about/([\w\s]+)$ about_user.php?about_key=$1