2013-03-20 107 views
0

我的规则有问题;我把两部作品都只是第一部。Double RewriteRule with htaccess

我有2个不同信息的文件。

RewriteRule ^([A-Za-z0-9-]+)/?$ tour.php?tour=$1 [NC,L] 
RewriteRule ^([A-Za-z0-9-]+)/?$ programa.php?programa=$1 [NC,L] 

回答

0

只有第一个工作,因为您用来匹配的模式完全相同:^([A-Za-z0-9-]+)/?$。您需要其他东西来分开tour.php以及programa.php。现在,如果有人在其浏览器的URL地址栏中输入http://youdomain.com/abcdefg/,则会将URI /abcdefg/发送到您的服务器。第一条规则:

RewriteRule ^([A-Za-z0-9-]+)/?$ tour.php?tour=$1 [NC,L] 

比赛,因为/abcdefg/匹配您的模式^([A-Za-z0-9-]+)/?$连带改写为/tour.php?tour=abcdefg。如果这是为了programa.php?第二条规则永远不会达到,因为所有内容都被第一条规则的模式捕获。你需要添加其他的东西来区分两者。例如,添加一个额外的路径注:

RewriteRule ^tour/([A-Za-z0-9-]+)/?$ tour.php?tour=$1 [NC,L] 
RewriteRule ^programa/([A-Za-z0-9-]+)/?$ programa.php?programa=$1 [NC,L] 

这意味着如果我去http://youdomain.com/programa/abcdefg/,我的请求被改写为/programa.php?programa=abcdefg,如果我去http://youdomain.com/tour/abcdefg/,我的请求被改写为/tour.php?tour=abcdefg