重写规则在类似页面的htaccess中不起作用


Rewrite rule is not working in htaccess for a similar page

我对单个页面有多个查询。为了使URL干净,我使用了htaccess,但对于类似的情况,只有第一条规则有效。

RewriteEngine on
RewriteRule ^([a-zA-Z0-9_-]+)$ eventlist.php?i=$1  # 1st rule works
RewriteRule ^([a-zA-Z0-9_-]+)$ eventlist.php?c=$1  # 2nd rule doesn't work

第一条规则是得到完美的结果,但第二条规则没有得到任何结果。

两个规则都相同,第二个规则不起作用,因为第一个规则已经重写了URL。除此之外,规则本身也不符合逻辑。

您的示例将执行以下操作:

  • domain.com/123将指向事件列表.php?i=123

如果你想把第二条规则移到第一条,就会发生以下情况:

  • domain.com/123将指向事件列表.php?c=123

你怎么知道是谁把你带到了活动名单上?

一个有效的、更符合逻辑的解决方案是:

RewriteEngine on
RewriteRule ^i-([a-zA-Z0-9_-]+)$ eventlist.php?i=$1
RewriteRule ^c-([a-zA-Z0-9_-]+)$ eventlist.php?c=$1

这样domain.com/i-123将指向eventlist.php?i=123。这只是一个例子,您最好使用domain.com/event-123/

编辑:

根据你的评论,你只想保留一个URL,并将其指向某个国家或行业。这就是你在你的情况下所做的:

RewriteEngine on
RewriteRule ^([a-zA-Z0-9_-]+)$ eventlist.php?ic=$1

在您的PHP文件中,如果$_GET['ic']是一个国家或行业,您应该检查您的数据库/数据。根据检查结果,您可以显示所需的事件。

在这种情况下,真正重要的是:不要忘记每个行业或国家都必须是独一无二的。