.htaccess重写不起作用


.htaccess rewriting not working

我当前的url:http://website.com/user.php?user=jon我想要它的样子:http://website.com/jon

这是我目前在htaccess文件中的内容

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST-FILENAME} !-d
RewriteCond %{REQUEST-FILENAME} !-f
RewriteCond %{REQUEST-FILENAME} !-l
RewriteRule . user.php?user=%{REQUEST-FILENAME}

但它不起作用。

您需要将-更改为_-它是REQUEST_FILENAME而不是REQUEST-FILENAME

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . user.php?user=%{REQUEST_FILENAME}

我更喜欢使用规则的regex部分

RewriteRule ^(.*)$ user.php?user=$1 [NC,L]

您的虚拟主机或Apache配置中是否为该目录启用了AllowOverride?

例如

<Directory "/">
    AllowOverride All
</Directory>

如果没有,那么您的本地htaccess文件将被忽略。此外,您是否启用了mod_rewrite?

如果不确定,请检查Apache日志文件。

https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride