在我的网站上出于搜索引擎优化目的,hotel.php?hotel_id=104
的链接已更改为parkgrand.html
并更改了htaccess以引用相同的脚本
代码:RewriteRule ^parkgrand\.html$ /hotel.php?hotel_id=104
直到这样它才能正常工作。但我想如果一些用户仍然访问旧网址,即hotel.php?hotel_id = 104那么他应该自动重定向到parkgrand.html并且用户代理应该得到回复301
所以,代码现在变为
RewriteCond %{REQUEST_URI} ^/hotel.php
RewriteCond %{QUERY_STRING} ^hotel_id=104
RewriteRule ^hotel.php /parkgrand.html [L,R=301]
RewriteRule ^parkgrand\.html$ /hotel.php?hotel_id=104
但这会导致重定向循环,并且不会向用户显示目标页面。 任何人都可以告诉我这应该是什么正确的代码。
答案 0 :(得分:3)
尝试一下:
# Redirect /hotel.php?hotel_id=104 to /parkgrand.html
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+hotel\.php\?hotel_id=104[&\s] [NC]
RewriteRule ^ /parkgrand.html? [R=302,L]
一旦您确认它正在努力避免缓存,请从R=302
更改为R=301
。
请注意,自从您使用R=301
以来,您可能已经暂停了以前的尝试,我建议您使用其他浏览器对上述内容进行测试,以确保其工作以防万一您的常用浏览器被缓存