Apache设置用于唯一子域和域目录

时间:2013-11-23 07:00:34

标签: apache directory subdomain config

我对大多数Web服务器配置都很有能力,但我遇到了一个问题。

我有一个带有一个子域的VPS安装。目前链接sub1.domain.com指向public_html / www文件夹的根目录。

我现在正在考虑创建新的子域以及使用domain.com指向wordpress安装。

据我了解,我必须编辑apache httpd.conf文件,但我不确定如何做到这一点。我希望我必须让domain.com指向一个子目录,并且sub2.domain.com指向另一个子目录。如下所示。

sub1.domain.com >> rootPathForApache/
domain.com >> rootPathForApache/domain.com/
sub2domain.com >> rootPathForApache/sub2/

有人可以指出我正确的方向。

亲切的问候,

1 个答案:

答案 0 :(得分:1)

您有几个选择:

选项1: Apache的<VirtualHost> directive可以解决这个问题(多个)。这仅适用于server config context

<VirtualHost *:80>
    DocumentRoot "rootPathForApache/"
    ServerName sub1.domain.com
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "rootPathForApache/domain.com/"
    ServerName domain.com
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "rootPathForApache/sub2/"
    ServerName sub2domain.com
</VirtualHost>

选项2 :在加载了rootPathForApache模块的mod_rewrite中使用.htaccess文件,将引入ServerAlias directive您现有的<VirtualHost>指令。

.htaccess内容(或者如果你想在VirtualHost指令本身内):

RewriteEngine On

RewriteCond %{HTTP_HOST}   ^sub1.domain.com
RewriteRule ^(.*)           $1 [L]

RewriteCond %{HTTP_HOST}   ^domain.com
RewriteRule ^(.*)           domain.com/$1 [L]

RewriteCond %{HTTP_HOST}   ^sub2domain.com
RewriteRule ^(.*)           sub2/$1 [L]

...和ServerAlias

ServerName domain.com
ServerAlias sub1.domain.com sub2domain.com

后一种解决方案(选项2)似乎很荒谬,特别是因为ServerAlias仅在VirtualHost指令中可用,而mod_rewritehtaccess文件会增加不必要的开销。这似乎并不自然。我想这说明了Apache配置和模块的灵活性。