繁体   English   中英

.htaccess重写:相同的规则,不同的位置

[英].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

两者都使用相同的规则,但是具有不同的位置。 对于索引页面,只有两个可能的参数, page1page2 ,但是配置文件页面的参数可以是任何参数。

我如何不执行www.website.com/page/page1www.website.com/user/user1类的方法来实现这些重写规则。 我需要上面显示的确切规则。

我的想法是在用户规则上方添加一个规则(我不确定如何),以检查URL是否没有page1page2

由于您只有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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM