htaccess 301重定向动态网址

时间:2009-10-03 08:16:03

标签: .htaccess mod-rewrite http-status-code-301

我正在将我的网站迁移到新域名。需要重定向页面

old-site.com/oldpage.php?id=X

new-site.com/newpage-X
(X是数字)

为什么这条规则不起作用?

RewriteEngine on
RewriteRule ^oldpage.php?id=(.*)$ http://new-site.com/newpage-$1 [R=301,L]

2 个答案:

答案 0 :(得分:0)

我怀疑你需要使用QUERY_STRING

RewriteCond %{QUERY_STRING}  ^id=(.*)$
RewriteRule ^oldpage\.php$ http://new-site.com/newpage-%1 [R=301,L]

希望这有帮助

答案 1 :(得分:0)

RewriteRule仅对URL path进行操作,而不对URL查询进行操作。您需要使用RewriteCond指令来测试URL查询(%{QUERY_STRING})。所以试试这条规则:

RewriteCond %{QUERY_STRING} ^(([^&]*&)*)id=([^&]+)&?(.*)?$
RewriteRule ^oldpage\.php$ http://new.example.com/newpage-%3?%1%4 [L,R=301]

此规则还将保留查询中的其他参数。