如何解决mod_rewrite 不适用于没有文件扩展名的查询字符串
我正在尝试使用 mod_rewrite
中的 .htaccess
将 user/John-Doe 重写为 user?name=John-Doe。我将 .htaccess 与我正在重写/重定向的文件位于同一目录中。这是 htaccess 中的代码:
RewriteEngine on
RewriteRule ^user/(\w+)/?$ user?name=$1
现在我没有从 $_GET['name'] 收到任何数据并且 var_dump($_GET) 是空的。
解决方法
您需要使用 [\w-]+
捕获更多字符
此外,您将请求指向 user?name=$1
,应该是 user.php?name=$1
?
.htaccess
<IfModule mod_rewrite.c> # Check if mod_rewrite if avaible
RewriteEngine on
RewriteRule ^user/([\w-]+)/?$ user.php?name=$1
</IfModule>
user.php
<?php
var_dump($_GET);
array(1) { ["name"]=> string(8) "John-Doe" }
测试示例
https://regex101.com/r/up32vA/1
还要检查您的服务器中是否启用了 mod_rewrite
,一个简单的方法是将其放入 index.php
print_r( apache_get_modules() );
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。