Wordpress 使用特定的查询字符串将URL的一部分重写到不同的域

Wordpress 使用特定的查询字符串将URL的一部分重写到不同的域,wordpress,.htaccess,url-rewriting,query-string,rewrite,Wordpress,.htaccess,Url Rewriting,Query String,Rewrite,我只想在设置了特定的查询字符串时,将一组url重写到另一个域。只有主域url需要重写,url路径的其余部分需要保持不变,查询字符串也需要删除 示例: http://www.domain-a.com/post-type-a/post-title/?template=custom 应重定向到: http://www.domain-b.com/post-type-a/post-title/ http://www.domain-b.com/post-type-b/post-title/ http:

我只想在设置了特定的查询字符串时,将一组url重写到另一个域。只有主域url需要重写,url路径的其余部分需要保持不变,查询字符串也需要删除

示例:

http://www.domain-a.com/post-type-a/post-title/?template=custom
应重定向到:

http://www.domain-b.com/post-type-a/post-title/
http://www.domain-b.com/post-type-b/post-title/
http://www.domain-b.com/post-type-c/post-title/

应重定向到:

http://www.domain-b.com/post-type-a/post-title/
http://www.domain-b.com/post-type-b/post-title/
http://www.domain-b.com/post-type-c/post-title/

应重定向到:

http://www.domain-b.com/post-type-a/post-title/
http://www.domain-b.com/post-type-b/post-title/
http://www.domain-b.com/post-type-c/post-title/
等等

查询字符串被设置为加载不同的单个帖子模板,这样我就可以在我激动人心的wordpress网站中创建一个微型站点。然而,我想使用我的其他域名为这个微型网站,因此我的问题

更新

如果我将这些行放在域b根目录下的.htaccess中:

RewriteCond %{HTTP_HOST} domain-a\.com$ [NC]
Rewritecond %{QUERY_STRING} ^template=custom$ [NC]
RewriteRule ^ http://www.domain-b.com%{REQUEST_URI}? [R=301,L]
重定向实际上是有效的,但是我遇到了两个问题:

1) 未加载正确的模板,因为重写规则在函数检测到查询字符串之前已将其全部删除。
2) 由于其他重写规则而更改回www.domain-a.com

因此,我认为我必须在wordpress函数中找到问题1的解决方案,而不是.htaccess。让我更好地解释一下我的情况:

我在Web空间中的主域已在域b上注册。我的wordpress网站安装在文件夹blog中。我正在使用domain-a作为wordpress url,因此domain-b.com/blog/重定向到domain-a。 这很好,但是如果查询字符串设置为template=custom,我想对这些wordpress重写规则做一个例外。在文件夹blog根目录下的.htaccess文件中,我有以下规则(由wordpress生成):

因此,我尝试将重写规则放在那里,但这不起作用(目前):

对于问题2,我不得不对Wordpress生成的重写规则做一个例外,以保持域a

抱歉,如果这一切有点模糊,但解释起来很复杂。 感谢您的帮助


谢谢

将以下内容添加到站点根目录中的
.htaccess
文件中

RewriteEngine on
RewriteBase / 

#if on www.domain-a.com
RewriteCond %{HTTP_HOST} ^www\.domain-a\.com$ [NC]
#and qs contains template=custom
RewriteCond %{QUERY_STRING} ^template=custom$ [NC]
#redirect any request to domain-b
RewriteRule ^ http://www.domain-b.com%{REQUEST_URI}? [R=301,L]
唯一的主要变化是将
^$
更改为
^
,该更改只会将主页匹配为将匹配任何请求的
^

编辑以回应评论

Options +FollowSymlinks 
RewriteEngine On 

#if the blog is only supposed to operate on domain-a, restrict it with thie condition
RewriteCond %{HTTP_HOST} ^www\.domain-a\.com$ [NC] 
RewriteCond %{REQUEST_URI} !^/blog/.*$ 
RewriteRule ^(.*)$ /blog/$1 [L]

RewriteCond %{HTTP_HOST} ^www\.domain-a\.com$ [NC] 
RewriteCond %{QUERY_STRING} ^template=custom$ [NC] 
RewriteRule ^ http://www.domain-b.com%{REQUEST_URI}? [R=301,L]

是的,这很有效!但是我遇到了两个问题:1)url重写是在我的函数中加载正确的模板之前执行的。php 2)由于其他重定向规则,domain-b更改回domain-a。这是我的域B根目录中的my.htaccess:
Options+FollowSymlinks RewriteEngine On RewriteCond%{REQUEST_URI}^/blog/*$RewriteRule^(.*)$/blog/$1 RewriteCond%{HTTP\u HOST}^www\.domain-a\.com$[NC]RewriteCond%{QUERY\u STRING}^template=自定义$[NC]RewriteRule^http://www.domain-b.com%{REQUEST_URI}?[R=301,L]
有什么办法可以避免这种情况吗?Wordpress安装在博客文件夹中,并使用domain-a作为网站地址。因此,如果查询字符串设置为…@Twansparant For#1,则wordpress不应将domain-b重写回domain-a,template参数仅用于重定向,但未传递,因此不确定如何使用它加载模板。对于#2,我没有看到任何会导致重定向回域a的内容。不过,Wordpress可能会重定向它,所以我将添加一个条件,仅将该规则应用于域a…谢谢!一旦我再次回到电脑后面,我会尝试一下!对于模板加载;这是用wordpess中的函数完成的,我回家后会把它粘贴到这里!