wordpress - 使用WordPress的通配符域重定向

标签 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域重定向,如下所示...

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]

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

当我转到 blog.domain.info 时,按预期将我重定向到 blog.domain.com

但是,当我转到 blog.domain.info/my-post 时,我根本不会重定向。
  • 我该如何解决?我尝试过重写我知道可以工作的规则,但我能想到的就是WordPress规则正在干扰。
  • 一旦修复,是否可以将这些mod-rewrites移至托管帐户的www根目录中的主.htaccess中,以使其与WordPress规则分开? 编辑:回答-不,它们将不起作用,因为它们是位于根www之外的目录中的域。

  • 谢谢!

    最佳答案

    看起来我只需要将新规则移至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
    

    关于wordpress - 使用WordPress的通配符域重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5690673/

    相关文章:

    php - 如何获取用于在 WooCommerce 中创建自定义订单返回 url 的订单 key

    php - 将单个产品页面重定向到 Woocommerce 中的主页

    php - 如何在 WordPress 中显示父类别列表(带链接)

    php - Woocommerce 仅在前端为登录用户提供价格折扣

    php - 如何使用 .htaccess 从 url 中删除扩展名而不使用尾部斜杠?

    .htaccess - htaccess 删除 .php 扩展名,index.php 并添加尾部斜线

    apache - 如何使用 htaccess 加载子域 url 的特定页面

    .htaccess - htaccess 重写 url - 将文件夹重定向到 php 文件

    php - 如何使用 .htaccess 指向目录以加载索引

    .htaccess - 使用 htaccess 重定向到照片