我正在将我的网站移动到新域。需要将页面
从
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]
我正在将我的网站移动到新域。需要将页面
从
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]
我怀疑您将需要使用 QUERY_STRING
RewriteCond %{QUERY_STRING} ^id=(.*)$
RewriteRule ^oldpage\.php$ http://new-site.com/newpage-%1 [R=301,L]
希望这可以帮助
RewriteRule
只对URL 路径而不是 URL 查询进行操作。您需要使用该RewriteCond
指令来测试 URL 查询 ( %{QUERY_STRING}
)。所以试试这个规则:
RewriteCond %{QUERY_STRING} ^(([^&]*&)*)id=([^&]+)&?(.*)?$
RewriteRule ^oldpage\.php$ http://new.example.com/newpage-%3?%1%4 [L,R=301]
此规则还将保留查询中的其他参数。