通过.htaccess重定向带有参数的旧链接

时间:2014-01-04 18:15:43

标签: regex apache .htaccess mod-rewrite

仍然在我的Joomla 2.5网站上工作,现在我意识到谷歌和其他网站上的旧链接我想要301重写:

http://www.my-site.com/index.php?p=26

导致

http://www.my-site.com/new-link.html

我试过

RewriteRule ^index.php?p=26$ /new-link.html [L,R=301]

但这不起作用。

我想补充一点,我需要特定的重写,例如index.php?p = 26 - > new-link.html,... p = 99 - > another-link.html等。

1 个答案:

答案 0 :(得分:1)

否则无效,因为您无法在RewriteRule中匹配QUERY_STRING。

尝试此规则:

RewriteCond %{THE_REQUEST} \s/+index\.php\?p=([^\s&]+) [NC]
RewriteRule ^ /new-link.html? [L,R=301]

修改

编写规则特定ID:

RewriteCond %{THE_REQUEST} \s/+(?:index\.php)?\?p=26(?:&|\s) [NC]
RewriteRule ^ /new-link.html? [L,R=301]

RewriteCond %{THE_REQUEST} \s/+(?:index\.php)?\?p=12345(?:&|\s) [NC]
RewriteRule ^ /another-link.html? [L,R=301]