0

我的规则有问题;我把两者都放了,但只适用于第一个。

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

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

1 回答 1

0

只有第一个有效,因为您用来匹配的模式完全相同:^([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

于 2013-03-20T22:56:37.607 回答