将域重定向到特定页面,而不重定向到该域中的页面

时间:2019-09-05 07:28:27

标签: php wordpress .htaccess

我正在将具有域映射的多站点Wordpress网站移至单个安装中。
为此,我希望旧的映射域(domainA.com,domainB.com等)引用新域上的特定页面(因此,newdomain.com / domainA,newdomain.com / domainB等),但我也想要旧域名的原始页面转到新网站上的页面(domainA.com/page应该变为newdomain.com/page),我希望它显示新的URL,而不是栏中的旧URL。这是我努力的一部分。
我怀疑我可以在htaccess中手动完成所有操作,但是其中一个网站然后需要在htaccess中以这种方式重写80多个页面,我认为这不是最好的计划。

当前,newdomain和domainA都在同一主机上,domainA是newdomain的别名。在此设置中,我设法将domainA.com引用到newdomain.com/domainA,并将其正确显示为url,但是如果我转到domainA.com/page,则它将把访问者发送到网站上的正确页面( newdomain.com/page),但不会显示正确的网址,但仍会显示原始网址(domainA.com/page)。
如果我将别名转换为域指针,则它将domainA.com指向newdomain.com的主页,而不是我想要其访问的特定页面,但是当进入特定页面时,它确实显示了正确的url,是正常的域指针行为。但这不能解决问题。

这是我正在使用的当前代码:

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_HOST} ^(www\.)?domainA\.com$
RewriteRule ^(.*)$ http:/www.newdomain.com/domainA/$1 [R=301,L]
# END WordPress

我希望将访问domainA.com的人发送到newdomain.com/domainA/,而将访问domainA.com/page的人发送到newdomain.com/page并在栏中显示newdomain url。就目前而言,我似乎只能执行这两者之一,具体取决于domainA是设置为别名还是设置为域指针。

根据Misorude在下面的第一条评论,我更改了代码,其余部分与上面的完全相同,它仍然在同一位置:

RewriteCond %{HTTP_HOST} ^(www\.)?domainA\.com$
RewriteRule ^$ /domainA/ [R=301,L]

现在的输出是domainA.com/domainA/,虽然它显示了newdomain.com/domainA的页面,但是栏中的url显示了旧的域。
在重写中使用完整url只是将总url添加到domainA url后面,由于它不存在,因此当然会出现错误。

完整的当前代码:

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_HOST} ^(www\.)?domainA\.com$
RewriteRule ^$ http://www.newdomain.com/domainA/ [R=301,L]
# END WordPress

这会将访问者从domainA.com发送到domainA.com/http:/www.newdomain.com/domainA/。

1 个答案:

答案 0 :(得分:0)

这是我固定代码的方式:

RewriteEngine On
#send only the base url of domainA to specific link
RewriteCond %{HTTP_HOST} ^(www\.)?domainA\.com [NC]
RewriteRule ^$ http://www.newdomain.com/domainA/ [R=301,L]
#Send all non-newdomain links to the specific page on the newdomain website
#while showing newdomain as the proper website
RewriteCond %{HTTP_HOST} !^(www\.)?newdomain\.com$ [NC]
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

这可以轻松添加额外的域,而无需进行额外的工作即可重新路由。