2016-04-07 27 views
1

我对单个页面有多个查询。为了使URL干净,我使用了htaccess,但只有第一条规则才起作用。重写规则在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 

第一个规则是让我完美的结果,但第二个没有给我任何结果。

+0

这两个重写规则都具有相同的正则表达式模式,第一条规则将捕获所有内容。使用您想要分发给每个规则的示例网址更新您的问题。 –

+0

http:// localhost/10times/eventlist?i = education-training此网址必须转换为http:// localhost/10times/education-training –

+0

http:// localhost/10times/eventlist?c =印度必须将其转换为http:// localhost/10times/india –

回答

0

你的两个规则都是一样的,第二个规则不起作用,因为第一个规则已经重写了URL。除此之外,规则本身不是逻辑。

你的榜样将执行以下操作:

  • domain.com/123将指向eventlist.php I = 123

,如果您移动第二个规则首先,会发生以下情况:

  • domain.com/123将指向eventlist.php?c = 123

你怎么知道至极一个把你带到EVENTLIST?

一个工作,并且更逻辑的解决办法是:

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/

编辑的更好:基于您的评论

,你想只保留一个网址并指向一个国家或行业。这是你在你的情况做笏:

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

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

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

+0

实际上,我代表这里的工业,c代表这里的国家。当请求时,页面事件列表必须按行业显示数据,并且当请求时,相同的页面事件列表必须按国家显示数据。什么是最好的解决方案 –

+0

这正是我在我的答案中解释的。我试图解释它更简单。直接更新我的答案,只需一秒钟。 – Boratzan

+0

但我的结果是不同的是来自$ _GET ['我']和c是不同的如果来自$ _GET ['c'],所以仍然会在这种情况下工作 –