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=
我正在使用以下重写代码将 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=