【问题标题】:Pointing Subdomains to subdirectories with .htaccess使用 .htaccess 将子域指向子目录
【发布时间】:2014-02-25 09:01:56
【问题描述】:

我知道关于这个主题有数千个线程,但是尽管搜索和尝试了很多小时,我真的无法找到我的案例的解决方案。所以我决定寻求帮助。

这是我的全景图

1) 我有一个域 www.mydomain.com,安装了 Wordpress 和 通配符 SSL 证书

您可能知道,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>

2) 现在我需要将额外的 wordpress 安装(没有 WPMU,但不同的安装)放在其他子域中,将它们指向我想称为“subdomain_NAMEOFTHESUBDOMAIN”的子目录

3) 据我所知,扩展 SSL 证书我无法通过 cPanel 创建子域,但我必须使用 .htaccess 规则来完成

这是我能够得到的:

1) 我创建了通配符 CNAME *.mydomain.com

2) 我在 public_html 文件夹中创建了一个目录,名为“subdomain_xxx”

3) 我添加了这些规则(在 wordpress 规则之前)将子域“xxx.mydomain.com”指向“subdomain_xxx”文件夹

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^subdomain_xxx/ - [L]
RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$
RewriteCond %{HTTP_HOST} ^([^.]+)\.mydomain\.com$
RewriteRule ^(.*)$ subdomain_xxx/$1 [L]
</IfModule>

起初它似乎有效:

  • 如果我访问 mydomain.com,我会得到正确的“第一级”wordpress www.mydomain.com
  • 如果我访问 ANYTHING.mydomain.com,我仍然会获得 www.mydomain.com
  • 如果我访问 xxx.mydomain.com,我会正确指向“subdomain_xxx”目录中的 wordpress 安装

但是有一个问题:

如果我尝试为任何其他 htaccess-subdomain/subdirectory 对复制该过程, 例如“subdomain_yyy”和“yyy.mydomain.com”,重复之前的规则:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^subdomain_yyy/ - [L]
RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$
RewriteCond %{HTTP_HOST} ^([^.]+)\.mydomain\.com$
RewriteRule ^(.*)$ subdomain_yyy/$1 [L]
</IfModule>

一直被重定向到创建的第一个子域:xxx.mydomain.com

非常清楚,这是我的完整 .htaccess 内容:

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule ^subdomain_xxx/ - [L]
RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$
RewriteCond %{HTTP_HOST} ^([^.]+)\.mydomain\.com$
RewriteRule ^(.*)$ subdomain_xxx/$1 [L]

RewriteRule ^subdomain_yyy/ - [L]
RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$
RewriteCond %{HTTP_HOST} ^([^.]+)\.mydomain\.com$
RewriteRule ^(.*)$ subdomain_yyy/$1 [L]
</IfModule>

# 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>

当然,我对 .htaccess(和正则表达式)有很多不了解的地方,所以我不仅在寻找快速解决方案,而且还在寻找其他一些信息来加深我对此事的理解。 我希望有人会为此找到耐心。

提前致谢

【问题讨论】:

    标签: wordpress .htaccess ssl subdomain wildcard


    【解决方案1】:

    我刚刚发现如何正确地做到这一点

    我使用的规则都是错误的。

    这是正确的方法

    RewriteCond %{HTTP_HOST} ^xxx.mydomain.com$ [NC]
    RewriteRule ^(.*)$ /subdomain_xxx/$1 [L]
    

    如果有人有评论,我会很高兴阅读,无论如何谢谢

    【讨论】:

      猜你喜欢
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      • 1970-01-01
      • 2014-01-28
      • 2014-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多