【问题标题】:.htaccess redirect from subdomain to main in WordPress.htaccess 在 WordPress 中从子域重定向到主域
【发布时间】:2015-07-25 23:30:15
【问题描述】:

我正在尝试将语言添加到我的 wordpress 网站。为此,我在“每个域”模式下使用“qTranslate X”插件。

它应该如下工作:

http://domain.com - main language
http://en.domain.com - english
etc...

我需要将所有请求从子域重定向到主域。其余的将由插件完成。

Example:
http://en.domain.com/category/article
should be redirected to
http://domain.com/category/article

我修改了主 .htaccess WP 文件

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^en\.domain\.com [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

但不幸的是,它仅适用于主页(即http://en.domain.com)。当我输入 http://en.domain.com/category/article 时,我看到 404 Not Found 页面。

感谢您的帮助!

【问题讨论】:

    标签: wordpress .htaccess http-status-code-404 qtranslate-x


    【解决方案1】:

    您需要执行 URL 重写,而不是使用 R=301 指定的重定向来生成带有状态代码 301 的 HTTP 重定向。

    假设您有一个通配符 DNS 条目,这样*.domain.com 会转到您的 Web 服务器,并且 WordPress 安装在 domain.com。以下代码应重写您的 URL 以访问正确的页面和语言。请注意,RewriteCond 已修改为使用(en|es|fr) 指定多种语言,并且RewriteRule 仅指定了L 选项,表明它是要处理的Last 规则。

    RewriteBase /
    RewriteCond %{HTTP_HOST} ^(en|es|fr)\.domain\.com [NC]
    RewriteRule ^(.*)$ http://domain.com/$1 [L]
    

    【讨论】:

      【解决方案2】:

      我花了很多时间在谷歌上搜索,终于找到了答案。我想提醒一下,我的问题是调整“qTranslate X”插件以服务于我的多语言网站。所以这就是我为实现这一目标所做的。

      在设置 -> 固定链接中,我检查了“自定义结构”, http://domain.com/%category%/%postname%

      在 qTranslate -> “高级设置” -> URL 修改模式:使用 Per-Domain 模式。我将“domain.com”设置为主要语言,“en.domain.com” - 英语等。

      您不必为永久链接自定义结构更改默认的 WordPress .htaccess 代码,它与“qTranslate X”插件完美配合。因此,请确保您的 .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
      

      唯一需要做的是确保对子域的请求作为对主域的请求进行处理。 IE。您的子域文件夹必须指向安装 WordPress 的文件夹。在不同的主机上,它可以通过不同的方式实现。至于我,在域设置中,我找到了一个选项“处理来自不存在的子域的所有请求”。所以我什至根本不需要创建任何子域!只是一个复选框。如果您不确定如何执行此操作,请联系您的托管支持服务并请求他们提供帮助。

      【讨论】:

      • 很高兴你让它工作,这实际上是 htaccess 在我的回答中所做的,将子域重写到主 Wordpress 安装。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-29
      • 2010-11-22
      • 2023-03-17
      • 2015-01-29
      • 2016-12-29
      • 1970-01-01
      相关资源
      最近更新 更多