我的规则有问题;我把两部作品都只是第一部。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]
我的规则有问题;我把两部作品都只是第一部。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]
只有第一个工作,因为您用来匹配的模式完全相同:^([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
。