我尝试过查看其他类似的问题,但无法真正找到我想要的内容。
我有一台运行 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,并删除