使用 mod_rewrite 解决 URL 冲突

使用 mod_rewrite 解决 URL 冲突

我有 2 个页面,分别用于会员资料页和公司资料页,对于会员,url 应该是:site.com/users/USER_ID 对于公司,url 应该是:site.com/COMPANY_ID

我的里面有这个.htaccess

#Members Profile Page
RewriteRule ^users/(.*)$ modules/members/members_profile.php?id=$1
RewriteRule ^users/(.*)/$ modules/members/members_profile.php?id=$1

#Companies Profile Page
RewriteRule ^(.*)$ modules/companies/companies_profile.php?id=$1
RewriteRule ^(.*)/$ modules/companies/companies_profile.php?id=$1

但是,这两条规则有冲突,导致用户页面也被引导,companies_profile.php因为公司规则在地址中也包含用户的个人资料页面。

更新: 我也用过[大]标志,不起作用......:

#Members Profile Page
RewriteRule ^users/(.*)$ modules/members/members_profile.php?id=$1 [L]
RewriteRule ^users/(.*)/$ modules/members/members_profile.php?id=$1 [L]

#Companies Profile Page
RewriteRule ^(.*)$ modules/companies/companies_profile.php?id=$1
RewriteRule ^(.*)/$ modules/companies/companies_profile.php?id=$1

尽管如此,它仍在加载companies_profile.php类似以下 URL /users/etc..

我该如何解决这个问题?

谢谢你的帮助

答案1

这里有效(/ 在开头) - 根据您发布的 URL,这将执行您想要的操作。

#Members Profile Page
RewriteRule ^/users/(.*)$ modules/members/members_profile.php?id=$1 [L]
RewriteRule ^/users/(.*)/$ modules/members/members_profile.php?id=$1 [L]

#Companies Profile Page
RewriteRule ^/(.*)$ modules/companies/companies_profile.php?id=$1
RewriteRule ^/(.*)/$ modules/companies/companies_profile.php?id=$1

您写的内容不起作用,因为“^user/”永远不匹配。您的 URL 是“/user/”。^ 表示行首。因此,您得到的不是“行首,用户”,而是“行首,/,用户”。

相关内容