使用WordPress的通配符域重定向

时间:2011-04-17 00:44:12

标签: wordpress .htaccess mod-rewrite redirect subdomain

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

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

blog.domain.info
www.blog.domain.info

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

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

blog.domain.com

以下是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

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

blog.domain.info - &gt; 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]

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

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

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

  1. 我该如何解决这个问题?我已经尝试了我知道工作的重写规则,但我能想到的是WordPress规则正在干扰。

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

  3. 感谢信!

2 个答案:

答案 0 :(得分:17)

看起来我只需将新规则移到WordPress部分之上。我还添加了一个新的,它应该从点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

修改

应该注意的是,如果您更改了这些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

答案 1 :(得分:2)

我为我的网站MethodShop拥有多个域名,包括methodshop.com,methodshop.net等。在进行维护时,我会转移不同站点之间的流量,这样我的用户就不会中断他们的体验。下面是我使用的htaccess通配符脚本。它需要用户尝试访问的任何URL,并镜像链接到另一个域。

例如,

http://methodshop.NET/games/play/bubblewrap/index.shtml

会重定向到 http://methodshop.COM/games/play/bubblewrap/index.shtml

这是methodshop.net的htaccess脚本,它将所有methodshop.net URL重写为methodshop.com。只需为您的域编辑它。

RewriteEngine on

RewriteRule (.*)$ http://www.methodshop.com\/$1 [R=301,L]