[英].htaccess rewrite: Same rule, different location
以下是我希望索引页面具有的一些重写规则的列表:
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
两者都使用相同的规则,但是具有不同的位置。 对于索引页面,只有两个可能的参数, page1
和page2
,但是配置文件页面的参数可以是任何参数。
我如何不执行www.website.com/page/page1
和www.website.com/user/user1
类的方法来实现这些重写规则。 我需要上面显示的确切规则。
我的想法是在用户规则上方添加一个规则(我不确定如何),以检查URL是否没有page1
或page2
。
由于您只有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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.