下面列出了我希望索引页面的一些重写规则:
www.website.com/index.php?page=page1 -> www.website.com/page1
www.website.com/index.php?page=page2 -> www.website.com/page2
但我也有一个个人资料页面,我想要以下规则:
www.website.com/profile.php?user=user1 -> www.website.com/user1
www.website.com/profile.php?user=user2 -> www.website.com/user2
两者都使用相同的规则,但具有不同的位置。对于索引页面,只有2个可能的参数page1
和page2
,但个人资料页面的参数可以是任何参数。
如果不执行www.website.com/page/page1
和www.website.com/user/user1
之类的操作,如何才能实现这些重写规则。我需要如上所示的那些确切规则。
我的想法是在用户规则之上添加一条规则(我不确定如何),以检查该网址是否包含page1
或page2
。
答案 0 :(得分:0)
由于您只有2个可能的页面,因此您可以使用以下内容:
RewriteEngine On
RewriteRule ^(page1|page2)$ /index.php?page=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)$ /profile.php?user=$1 [L]
如果您还需要在外部重定向,请添加这些内容(位于RewriteEngine On
下方):
RewriteCond %{THE_REQUEST} \ /+index\.php\?page=(page1|page2)
RewriteRule ^ /%1? [L,R]
RewriteCond %{THE_REQUEST} \ /+profile\.php\?user=([^&\ ]+)
RewriteRule ^ /%1? [L,R]