301忽略动态网址

时间:2014-09-24 19:58:23

标签: regex apache .htaccess mod-rewrite redirect

好的,先发布一下stackoverflow,我就去吧。

我正在努力为旧网站的迁移编写301重定向。 该网站使用动态网址,这些似乎不起作用。

旧网站:http://oldsite.com/index.php?actie=contact

新网站:http://newsite.com/contact

Options +FollowSymlinks
RewriteEngine on
Redirect 301 /index.php?actie=contact http://newsite.com/contact

2 个答案:

答案 0 :(得分:1)

Redirec指令无法匹配查询字符串。

在root .htaccess中使用这样的规则:

Options +FollowSymlinks
RewriteEngine on

RewriteCond %{QUERY_STRING} ^actie=contact$ [NC]
RewriteRule ^index\.php$ http://newsite.com/contact? [L,NC,R=301]

答案 1 :(得分:0)

您无法与Redirect中的查询字符串匹配,您必须使用mod_rewrite和%{QUERY_STRING}变量。 (另请注意Redirect是一个mod_alias指令,与重写引擎无关)

选项+ FollowSymlinks

RewriteCond %{QUERY_STRING} ^actie=contact(^|&)
RewriteRule ^index\.php http://newsite.com/contact? [L,R=301]

如果您想使一般规则匹配actie=之后的任何内容,则:

RewriteCond %{QUERY_STRING} ^actie=([^&]+)
RewriteRule ^index\.php http://newsite.com/%1? [L,R=301]