如何隐藏查询字符串并使用htaccess重写URL

时间:2012-01-19 07:29:06

标签: apache .htaccess

我做了一些搜索,但我找不到解决方案。这就是我想要的。用户输入:

Case 1: www.example.com/user/profile.php?alias=bob
Case 2: www.example.com/user/bob

两者都应该在用户的浏览器中显示为:

www.example.com/user/bob

在内部,它应该是“profile.php?alias = bob”

目前,我的htaccess文件中有以下mod_rewrite规则:

RewriteEngine On
#Converting alias to query
RewriteRule ^([A-Za-z0-9-]+)/?$ profile.php?alias=$1 [QSA,L]

适用于案例2.但是,对于案例1,该网址仍然显示完整查询。如何才能让它在案例1中正确显示?

1 个答案:

答案 0 :(得分:0)

尝试将以下内容添加到您网站根目录中的htaccess文件中。

RewriteEngine On
RewriteBase /

#if the request is using profile.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /user/profile\.php\?alias=([^&\ ]+) [NC]
#redirect to user/[ALIAS]
RewriteRule . /user/%1 [L,R=301]

#extract alias from /user/alias
RewriteRule ^user/([A-Za-z0-9-]+)/?$ profile.php?alias=$1 [QSA,L]