2

我试图找出一个正则表达式,它将在 URL 中找到一些数字并在我重定向到的 URL 中使用它们。

Redirect 301 /page.php?id=95485666 http://test.com/profile/info/id/95485666

我在想也许

Redirect 301 /page.php?id=([0-9]+) http://test.com/profile/info/id/$1

但它似乎不起作用

另外,如果我进行 301 重定向,我必须将代码保留在 .htaccess 文件中多长时间?谷歌什么时候会发现新链接是好的链接?

4

2 回答 2

3

您不能匹配Redirect指令中的查询字符串(也不能在RedirectMatch/RewriteRule中)。您需要使用 mod_rewrite 的%{QUERY_STRING}var:

RewriteEngine On
RewriteCond %{QUERY_STRING} (^|&)id=([0-9]+)($|&)
RewriteRule ^/?page\.php$ http://test.com/profile/info/id/%2? [L,R=301]
于 2012-09-10T17:20:49.090 回答
2

好吧,我猜语法不正确。尝试这个:

RewriteRule ^page.php?id=([0-9]+)  http://test.com/profile/info/id/$1  [R=301,L]
于 2012-09-10T17:03:29.617 回答