我的规则有问题;我把它们放在一起,但只是第一个。
我有2个不同信息的文件。
RewriteRule ^([A-Za-z0-9-]+)/?$ tour.php?tour=$1 [NC,L]
RewriteRule ^([A-Za-z0-9-]+)/?$ programa.php?programa=$1 [NC,L]
答案 0 :(得分:0)
只有第一个有效,因为您用来匹配的模式完全相同:^([A-Za-z0-9-]+)/?$
。您还需要其他东西来分隔 tour.php 以及 programa.php 的内容。现在,如果有人在浏览器的URL地址栏中输入http://youdomain.com/abcdefg/
,则会将/abcdefg/
URI发送到您的服务器。第一条规则:
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
。