我需要将country.cfm?country = xxx更改为xxx.html 和hotel.cfm?hotel = yyy to yyy.html
我的.htacess文件中有以下内容:
{{1}}
问题在于国家在工作但不是酒店。如果我把酒店改写在国外,那么酒店可以工作,但不是国家。
如果我去hotel.cfm?hotel = yyy然后我被重定向到country.cfm,反之亦然,如果我更换了rewriterules。
答案 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
匹配部分的任何差异都足够了,即使它在开头只是一个字母。