使用参数或单独重定向将域重新编码到域

时间:2014-01-10 23:14:43

标签: mod-rewrite

我有一个旧网址,旧网址结构,并希望将其重定向(301)到另一个具有新网址结构的域。我有必须单独转换的网址:

http://domainA.com/ => http://ru.domainB.com/
http://domainA.com/?fieldA=abc => http://ru.domainB.com/xxx/zzz
http://domainA.com/?fieldA=www&fieldB=aaa => http://ru.domainB.com/uuu/ooo/ppp

其他网址具有相同的值:

http://domainA.com/?fieldC=abc&fieldD=4 => http://ru.domainB.com/abc/xxx/4
http://domainA.com/?fieldC=abc&fieldD=5 => http://ru.domainB.com/abc/xxx/5
http://domainA.com/?fieldC=abc&fieldD=6 => http://ru.domainB.com/abc/xxx/6

http://domainA.com/?fieldC=def&fieldD=4 => http://ru.domainB.com/def/xxx/4
http://domainA.com/?fieldC=def&fieldD=5 => http://ru.domainB.com/def/xxx/5
http://domainA.com/?fieldC=def&fieldD=6 => http://ru.domainB.com/def/xxx/6

左侧网址可以在“?”之前选择“index.php”或“www。”在域名之前。有人可以在这里帮助我并用mod_rewrite(apache)翻译这4个链接吗?

我的帐户有一个网站空间的多个域名(通配符子域)。 apache conf中的伪设置:

ServerAlias *.domainA.com
ServerAlias *.domainB.com
ServerAlias *.domainC.com
ServerAlias *.domainD.com

编辑:这有助于我。

RewriteCond %{HTTP_HOST} ^(www\.|)domainA\.com
RewriteCond %{QUERY_STRING} fieldA=xxx)
RewriteRule ^(.*)$ http://ru.domainB.com/? [R=301,L]

RewriteCond %{HTTP_HOST} ^(www\.|)domainA\.com
RewriteCond %{QUERY_STRING} fieldA=abc
RewriteRule ^(.*)$ http://ru.domainB.com/abc/bbb/? [R=301,L]

RewriteCond %{HTTP_HOST} ^(www\.|)domainA\.com
RewriteCond %{QUERY_STRING} fieldA=abc&fieldB=(\d+)
RewriteRule ^(.*)$ http://ru.domainB.com/abc/%1? [R=301,L]

1 个答案:

答案 0 :(得分:1)

如果只在.htaccess文件中执行重定向301怎么办?

redirect 301 http://domainA.com/ http://ru.domainB.com/

更新:如果您需要所有4个网址,并且它们非常具体,就像您说的那样。然后尝试这个。这应该适用于所有4个URL。

RewriteEngine On

RewriteCond %{QUERY_STRING} (^|&)fieldA=abc(&|$) [NC]
RewriteRule ^(.*)$ http://ru.domainB.com/xxx/zzz? [R=301,L,NC]

RewriteCond %{QUERY_STRING} (^|&)fieldA=www&fieldB=aaa(&|$) [NC]
RewriteRule ^(.*)$ http://ru.domainB.com/uuu/ooo/ppp? [R=301,L,NC]

RewriteCond %{QUERY_STRING} (^|&)fieldC=abc&fieldD=4(&|$) [NC]
RewriteRule ^(.*)$ http://ru.domainB.com/abc/xxx/4? [R=301,L,NC]

RewriteRule ^(.*)$ http://ru.domainB.com/$1 [R=301,L,NC]

更新2:

然后尝试使用新的URL。这会将fieldC和fieldD与ABCDEF匹配。

RewriteCond %{QUERY_STRING} ^fieldC=(.*)&fieldD=(.*) [NC]
RewriteRule ^(.*)$ http://ru.domainB.com/%1/xxx/%2 [R=301,L,NC]