1

我正在将我的网站移动到新域。需要将页面

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]
4

2 回答 2

0

我怀疑您将需要使用 QUERY_STRING

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

希望这可以帮助

于 2009-10-03T08:38:06.190 回答
0

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]

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

于 2009-10-03T08:45:32.993 回答