htaccess将旧URL重定向到新URL

时间:2013-09-25 08:43:14

标签: .htaccess redirect mod-rewrite

在我的网站上出于搜索引擎优化目的,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

但这会导致重定向循环,并且不会向用户显示目标页面。 任何人都可以告诉我这应该是什么正确的代码。

1 个答案:

答案 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以来,您可能已经暂停了以前的尝试,我建议您使用其他浏览器对上述内容进行测试,以确保其工作以防万一您的常用浏览器被缓存