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

Php mod_rewrite不使用没有文件扩展名的查询字符串,php,regex,.htaccess,mod-rewrite,Php,Regex,.htaccess,Mod Rewrite,我正试图用中的mod_rewrite将user/John Doe重写为user?name=John Doe。我的.htaccess与我正在重写/重定向的文件位于同一目录中。这是htaccess: RewriteEngine on RewriteRule ^user/(\w+)/?$ user?name=$1 现在,我没有从$\u GET['name']收到任何数据,var\u dump($\u GET)为空。您需要使用[\w-]+捕获更多字符 另外,您将请求指向user?name=$1,该请

我正试图用
中的
mod_rewrite
user/John Doe重写为user?name=John Doe。我的.htaccess与我正在重写/重定向的文件位于同一目录中。这是htaccess:

RewriteEngine on 
RewriteRule ^user/(\w+)/?$ user?name=$1

现在,我没有从$\u GET['name']收到任何数据,var\u dump($\u 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>
测试示例


还要检查服务器中是否启用了
mod_rewrite
,一个简单的方法是将其放入index.php

print_r( apache_get_modules() );

\w
与连字符不匹配,您需要
[\w-]
您的文件中还有其他规则吗,还是只有此规则?请确认一下。
user
脚本是否能够运行PHP?这不应该是
user.php吗?name=$1
?@WiktorStribiżew感谢它在本地服务中发挥了作用,但一旦我将它上传到我的网络主机,每个人都得到了404error@RavinderSingh13还有其他规则,但不在此文件中。
print_r( apache_get_modules() );