RewriteRule第一次重写是有效但不是下一次

时间:2016-07-29 20:48:32

标签: .htaccess

我需要将country.cfm?country = xxx更改为xxx.html 和hotel.cfm?hotel = yyy to yyy.html

我的.htacess文件中有以下内容:

{{1}}

问题在于国家在工作但不是酒店。如果我把酒店改写在国外,那么酒店可以工作,但不是国家。

如果我去hotel.cfm?hotel = yyy然后我被重定向到country.cfm,反之亦然,如果我更换了rewriterules。

1 个答案:

答案 0 :(得分:2)

因为您使用完全相同的重写规则。如果规则与两者相符,引擎应该如何知道XXX.html是国家/地区而YYY.html是酒店?由于您拥有L标记,因此无法处理下一个标记。

您需要在网址上有所不同,例如hotel-XXX.html,然后与之匹配。然后你的重写将起作用。

例如:

# change all the country pages
RewriteRule ^country-([^/]*)\.html$ /country.cfm?country=$1 [L]

# change all the hotel pages
RewriteRule ^hotel-([^/]*)\.html$ /hotel.cfm?hotel=$1 [L]

用于site.tld/hotel-name.html等网址,或者

# change all the country pages
RewriteRule ^country/([^/]*)\.html$ /country.cfm?country=$1 [L]

# change all the hotel pages
RewriteRule ^hotel/([^/]*)\.html$ /hotel.cfm?hotel=$1 [L]

适用于site.com/hotel/name.html

等网址

匹配部分的任何差异都足够了,即使它在开头只是一个字母。