我有两个域名设置子域名如下......
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 时,我根本没有被重定向。
我该如何解决这个问题?我已经尝试了我知道工作的重写规则,但我能想到的是WordPress规则正在干扰。
一旦修复,我可以将这些mod重写移动到主机帐户的www根目录中的主.htaccess,使它们与WordPress规则分开吗? 编辑: 答案 - 否,它们无法正常工作,因为它们是停放在根目录下的目录中的域名。
感谢信!
答案 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]