如何编写.htaccess重定向来查找所有数字?

时间:2012-09-10 16:56:58

标签: php regex .htaccess numbers hyperlink

我正在尝试找出一个正则表达式,它会在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文件中?什么时候谷歌会发现新的链接是好的?

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分:2)

我觉得语法不正确。试试这个:

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