Apache:多域处理

Apache:多域处理

因此我使用以下模式来处理我的 apache 上的多个站点:

<VirtualHost 192.168.1.100:80>

# get the server name from the Host: header
UseCanonicalName Off

VirtualDocumentRoot /var/www/%0/docs
VirtualScriptAlias /var/www/%0/cgi-bin

</VirtualHost>

因此,如果客户端访问 www.example.com,它实际上将指向 /var/www/www.example.com/doc/,这很好。但是,如果客户端访问 example.com,会怎么样?它将指向 /var/www/example.com/doc,这不是我们想要的。

所以我的问题是:有没有更好的方案?或者我应该怎么做才能解决这个问题?

答案1

这取决于您希望看到什么行为。

如果您希望www.example.com网站重定向到example.com或反之亦然,可以在RewriteRule设置中实现。例如(这些位于您的 内<VirtualHost>):

# Send www.example.com to example.com
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^/(.*)$ http://example.com/$1 [R=301,L]
# Send www.other.example.com to other.example.com
RewriteCond %{HTTP_HOST} ^www\.other\.example\.com$ [NC]
RewriteRule ^/(.*)$ http://other.example.com/$1 [R=301,L]

www所有名字都去掉:

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

如果您想以两个名称提供内容,那么您有几个选择。

  • 如果您只拥有一组非常简单的域,那么请将构造的 docroot 更改为不关心www

    VirtualDocumentRoot /var/www/%-2/docs
    

    ...指向 处的文档根目录/var/www/example/docs

  • 如果您需要对子域名进行更多的创造性(例如,让b.example.comwww.b.example.com指向他们自己的网站,而不是example.com一个网站),符号链接可能是一个很好的方法。

    Options +FollowSymLinks
    

    ...并/var/www/www.example.com在 处创建一个指向 目录的 符号链接/var/www/example.com

相关内容