我的规则有问题;我把两者都放了,但只适用于第一个。
我有 2 个包含不同信息的文件。
RewriteRule ^([A-Za-z0-9-]+)/?$ tour.php?tour=$1 [NC,L]
RewriteRule ^([A-Za-z0-9-]+)/?$ programa.php?programa=$1 [NC,L]
我的规则有问题;我把两者都放了,但只适用于第一个。
我有 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的内容。现在,如果有人在http://youdomain.com/abcdefg/
浏览器的 URL 地址栏中输入内容,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
。