使用WordPress的通配符域重定向

Spa*_*rky 7 subdomain wordpress .htaccess mod-rewrite redirect

我有两个域名设置与子域如下...

blog.domain.com
www.blog.domain.com

blog.domain.info
www.blog.domain.info
Run Code Online (Sandbox Code Playgroud)

两个域都指向同一服务器上的相同位置,即包含WordPress的目录.(domain.com/blog)

为了让Google满意,我希望所有内容都能重定向到这个域名......

blog.domain.com
Run Code Online (Sandbox Code Playgroud)

这是WordPress目录中包含的.htaccess文件内的内容......

# 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
Run Code Online (Sandbox Code Playgroud)

所以我进入了我的cPanel并添加了一个301 Domain Redirect,如下所示......

blog.domain.info - > blog.domain.com(选择"www"可选和通配符).

cPanel然后自动将以下内容添加到WordPress重写规则下的同一.htaccess文件中...

RewriteCond %{HTTP_HOST} ^blog.domain.info$ [OR]
RewriteCond %{HTTP_HOST} ^www.blog.domain.info$
RewriteRule ^(.*)$ "http\:\/\/blog\.domain\.com$1" [R=301,L]
Run Code Online (Sandbox Code Playgroud)

问题是通配符部分似乎不起作用.

当我访问blog.domain.info时,我会按预期重定向到blog.domain.com.

但是当我去blog.domain.info/my-post时,我根本没有被重定向.

  1. 我怎样才能解决这个问题?我已经尝试过重写规则,我知道工作,但我能想到的是WordPress规则正在干扰.

  2. 一旦修复,我可以将这些mod重写移动到主机帐户的www根目录中的主.htaccess,使它们与WordPress规则分开吗? 编辑:答案 - 不,他们将无法工作,因为他们是停在根www的目录中的域.

谢谢!

Spa*_*rky 17

看起来我只需将新规则移到WordPress部分之上.我还添加了一个新的,它应该从dot com域名中删除'www'.

这一切似乎都有效.

任何评论赞赏.

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^blog.domain.info$ [OR]
RewriteCond %{HTTP_HOST} ^www.blog.domain.info$ [OR]
RewriteCond %{HTTP_HOST} ^www.blog.domain.com$
RewriteRule ^(.*)$ "http\:\/\/blog\.domain\.com\/$1" [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Run Code Online (Sandbox Code Playgroud)

编辑

应该注意的是,如果您更改了这些Wordpress注释之间包含的htaccess文件中的任何内容,它可能会在以后被Wordpress覆盖.将您的自定义编辑移动到此块之外和之上也是有效的,并且不受Wordpress本身对htaccess的任何更改的影响.

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^blog.domain.info$ [OR]
RewriteCond %{HTTP_HOST} ^www.blog.domain.info$ [OR]
RewriteCond %{HTTP_HOST} ^www.blog.domain.com$
RewriteRule ^(.*)$ "http\:\/\/blog\.domain\.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
Run Code Online (Sandbox Code Playgroud)