我做了一些搜索,但我找不到解决方案。这就是我想要的。用户输入:
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中正确显示?
答案 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]