我对大多数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/
有人可以指出我正确的方向。
亲切的问候,
答案 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配置和模块的灵活性。