2016-05-16 164 views
1

我目前的网址:http://website.com/user.php?user=jon 我希望它看起来像:http://website.com/jon的.htaccess重写不工作

这是我目前在我的htaccess文件

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST-FILENAME} !-d 
RewriteCond %{REQUEST-FILENAME} !-f 
RewriteCond %{REQUEST-FILENAME} !-l 

RewriteRule . user.php?user=%{REQUEST-FILENAME} 

但它不工作。

+0

你可以也可以尝试 - RewriteRule(。*)user.php?user = $ 1 – Brett

+0

可以工作;有点。 它让我到我想要的页面,但它说用户不在数据库中。 – Critical

+0

你可以做一个print_r($ _ GET);在这个页面上加载并向我们展示你的问题的输出(甚至可以在user.php上发布代码) – Brett

回答

2

你需要改变你的 - 到_ - 这是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} 

我更喜欢使用规则的正则表达式部分

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

好的地方,我看到他们作为下划线,我也会改变最后一行为 RewriteRule ^(。*)$ user.php?user = $ 1 [NC,L] –

+0

@JamesLockhart你想编辑和我将批准它,你可以得到一些声誉 – Brett

+0

完成,并感谢:) –

2

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

例如

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

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

如果不确定检查您的Apache日志文件。

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

+0

我的主机不允许我修改apache配置。 当我把最后一行改为'RewriteRule。 user.php?user =%jon'它的工作原理,但只把我带到那个页面。 – Critical