Mod rewrite mod使用参数将domainA重写为domainB或单独重定向

Mod rewrite mod使用参数将domainA重写为domainB或单独重定向,mod-rewrite,Mod Rewrite,我有一个具有旧url结构的旧域,希望将它重定向(301)到另一个具有新url结构的域。我有必须单独转换的URL: 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

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

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/ => 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 其他URL具有相同的值:

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 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 左侧URL可以在域名之前有可选的“index.php”或“www”。有人能帮我翻译这4个链接吗

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

ServerAlias *.domainA.com ServerAlias *.domainB.com ServerAlias *.domainC.com ServerAlias *.domainD.com ServerAlias*.domainA.com ServerAlias*.domainB.com ServerAlias*.domainC.com ServerAlias*.domainD.com 编辑:这对我有帮助

重写cond%{HTTP|u HOST}^(www\.|)domainA\.com RewriteCond%{QUERY_STRING}fieldA=xxx) 重写规则^(.*)$http://ru.domainB.com/? [R=301,L] 重写cond%{HTTP|u HOST}^(www\.|)domainA\.com RewriteCond%{QUERY_STRING}fieldA=abc 重写规则^(.*)$http://ru.domainB.com/abc/bbb/? [R=301,L] 重写cond%{HTTP|u HOST}^(www\.|)domainA\.com RewriteCond%{QUERY_STRING}fieldA=abc&fieldB=(\d+) 重写规则^(.*)$http://ru.domainB.com/abc/%1? [R=301,L]
在.htaccess文件中执行重定向301怎么样

redirect 301 http://domainA.com/ http://ru.domainB.com/
更新:如果您需要所有4个URL,并且它们像您所说的那样非常具体。然后试试这个。这应该适用于所有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与
ABC
DEF
匹配

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

谢谢你的回答和提示,但这不是我100%需要的。我已经用新链接编辑了我的文本。我只为domainA需要这个。在您的示例中,此Web空间的每个域都将使用您的“重写规则”。好的,您到底想要doaminA做什么?你想让它一直拥有www,还是这很重要?@user706420我更新了答案,加入了你添加的新URL。这应该进入
根目录下的
.htaccess
文件。那么这些规则将只适用于
。我会接受你的答案,因为它帮助我解决这个问题。在您的示例中,代码不是必需的。在“查询字符串”中,您写道:(^ |&)和(&$)。您可以将其删除,并且其工作模式相同。参数中的整数值应为(\d+)而不是您的(*),等等:)谢谢也许吧,但他们成功了是的,我不知道它是否总是一个数字。但是我可以使用\w+。不管怎样,很高兴你把事情解决了。
RewriteCond %{QUERY_STRING} ^fieldC=(.*)&fieldD=(.*) [NC]
RewriteRule ^(.*)$ http://ru.domainB.com/%1/xxx/%2 [R=301,L,NC]