如何使用子域链接子目录? (虚拟主机、mod_rewrite、htaccess、DNS)

Posted

技术标签:

【中文标题】如何使用子域链接子目录? (虚拟主机、mod_rewrite、htaccess、DNS)【英文标题】:How to link subdirectories using subdomain? (VirtualHost, mod_rewrite, htaccess, DNS) 【发布时间】:2015-09-01 13:21:34 【问题描述】:

我正在使用 AWS(亚马逊网络服务)的 EC2 和 Route 53 以及 Bitnami 的 LAMP(Apache、mysqlphp)。

我正在尝试独立运行两个 wordpress 网站:

 ...local_path/htdocs/subsite1
 ...local_path/htdocs/subsite2

我想使用如下子域访问这些子站点:

 subsite1.mydomain.com → ...local_path/htdocs/subsite1
 subsite2.mydomain.com → ...local_path/htdocs/subsite2

此外,我想在需要时切换“mydomain.com”和“www.mydomain.com”的位置(可能一年一次或两次)。具体来说,我想在需要时在案例 A 和 B 之间切换。

Case A :
 subsite1.mydomain.com -↘︎  
 mydomain.com ----------→ ...local_path/htdocs/subsite1
 www.mydomain.com ------↗︎

 subsite2.mydomain.com → ...local_path/htdocs/subsite2

Case B :
 subsite1.mydomain.com → ...local_path/htdocs/subsite1

 mydomain.com ----------↘︎ 
 www.mydomain.com ------→ ...local_path/htdocs/subsite2
 subsite2.mydomain.com -↗︎

我尝试结合DNS(AWS Route 53)、VirtualHost、mod_rewrite和/或htaccess跟随几篇互联网文章,但没有成功,虽然我认为有几种方法可以实现。

考虑到安全性和便利性,解决此问题的最佳方法是什么?我应该如何设置它们? 提前谢谢!

【问题讨论】:

重复? ***.com/questions/13837978/… This one in particular 可能是,但我认为链接帖子上没有提到切换“mydomain.com”和“www.mydomain.com”的情况。谢谢。 对不起,我不知道,因为这是我的第一个问题!我做到了。谢谢! 【参考方案1】:

(自答)

我使用 VirtualHost 解决了这个问题。

特别是在“mydomain.com”和“www.mydomain.com”的情况下,我使用了ServerAlias

首先,我为我的服务器的ip注册了A记录:

mydomain.com. A XXX.XXX.XXX.XXX
www.mydomain.com. A XXX.XXX.XXX.XXX
subdomain1.mydomain.com. A XXX.XXX.XXX.XXX
subdomain2.mydomain.com. A XXX.XXX.XXX.XXX

其次,在 VirtualHost 的配置文件中,(在我的例子中,.../apache2/conf/extra/httpd-vhosts.conf)

NameVirtualHost *:80
<VirtualHost *:80>
        ServerAdmin email1@domainX.com
        DocumentRoot ...local_path/htdocs/subsite.mydomain.com/htdocs
        ServerName subsite1.mydomain.com
        ServerAlias subsite1.mydomain.com mydomain.com
        ErrorLog "logs/subsite1.mydomain.com-error_log"
        CustomLog "logs/subsite1.mydomain.com-acccess_log" common
</VirtualHost>


<VirtualHost *:80>
        ServerAdmin email2@domainY.com
        DocumentRoot ...local_path/htdocs/subsite2.mydomain.com/htdocs
        ServerName subsite2.mydomain.com
        ServerAlias subsite2.mydomain.com www.mydomain2.com
        ErrorLog "logs/subsite2.mydomain.com-error_log"
        CustomLog "logs/subsite2.mydomain.com-access_log" common
</VirtualHost>

效果很好!

参考(关于 VirtualHost 的韩国文章)

http://techstory.kr/%EC%9B%B9%EC%84%9C%EB%B2%84-%EC%84%A4%EC%B9%98-%EB%B0%8F-subdomain-%EC%84%A4%EC%A0%95/ http://susemi99.kr/379

【讨论】:

另外,我修改了具有prevented activation of .htaccess files 的httpd.conf。将 ...web_root/htdocs 目录的 AllowOverride None 更改为 AllowOverride All

以上是关于如何使用子域链接子目录? (虚拟主机、mod_rewrite、htaccess、DNS)的主要内容,如果未能解决你的问题,请参考以下文章

如何将不同的域或子域打开到新选项卡以及相同的域链接到相同的选项卡

如何使用虚拟主机将动态子域提供给位于 docroot 中的文件夹

使用 Express 和 Node,如何跨子域/主机头维护会话

Express.js 虚拟主机子域设置

如何使用 cURL 创建子域?

内部链接仍然指向开发子域?