htaccess 重写规则 %20 错误

htaccess rewrite rule %20 error

我正在使用以下重写代码将 url http://localhost/about.php?about_key=test%20tester 美化为 http://localhost/about/test%20tester

代码

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

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

但是我得到一个找不到对象的错误,一段时间后我发现 URL 中的 %20 是问题所在。所以我的问题是,我该如何进行这项工作?

URI 中的内容如 %20 在 URI 与重写规则匹配之前被解码。这意味着 %20 变成了 space,并且您的正则表达式 \w 不会与 whitespace 匹配。尝试将您的正则表达式更改为:

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