微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mod_rewrite 不适用于没有文件扩展名的查询字符串

如何解决mod_rewrite 不适用于没有文件扩展名的查询字符串

我正在尝试使用 mod_rewrite 中的 .htaccessuser/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 举报,一经查实,本站将立刻删除。