Apache 虚拟主机模式匹配

Apache 虚拟主机模式匹配

我尝试过查看其他类似的问题,但无法真正找到我想要的内容。

我有一台运行 apache2 的服务器,我希望所有对 www.foo.tld 的请求都提供 /var/www/foo.tld 中的页面

例如:

www.example.com  -> /var/www/example.com
example.net      -> /var/www/example.net
foobar.co.uk     -> /var/www/foobar.co.uk
www.foobar.co.uk -> /var/www/foobar.co.uk

我不知道该怎么做。有时我可以在有或没有 www 子域名的情况下让它工作,但不能同时使用两者。

答案1

VirtualDocumentRoot apache 指令可以解决问题,下面是一个很好的解释:http://httpd.apache.org/docs/2.0/vhosts/mass.html

答案2

我通过创建文件 /etc/apache2/sites-enabled-000-Dynamic 解决了该问题

并将文件 000-default 重命名为 001-default。

此文件中的内容如下

<VirtualHost *:80>

  RewriteEngine On

  # Redirect www to non-www (class B compliance with no-www)
  RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
  RewriteRule ^(.*)$ http://%1$1 [R=301,L]

  # Remove trailing slashes
  RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]

  # Automatically get the correct folder
  UseCanonicalName Off
  VirtualDocumentRoot /var/www/%1

</VirtualHost>

我稍微做了一些修改:名称 www.foobar.com 现在指向 /var/www/foobar,这使得它变得容易得多。

除了动态虚拟主机之外,这还会将 www.foobar.com 重定向到 foobar.com,并删除

相关内容