6 alias redirect virtualhost domain-name apache-2.2
我有一个网站 (domain.com),我想重定向我所有的辅助域(domain2.com、domain3.com)和这些域的所有子域(*.domain.com、*.domain2.com... ) 到主域 www.domain.com(因为我希望后者是唯一可以访问该站点的 URL)。
为此,我创建了一个 Apache 虚拟主机来捕获所有这些可能性并重定向它们(在配置我的 DNS 之后,这是不言而喻的)。我将此配置放在 Apache 的“sites-enabled”文件夹中名为“999-catchall”的文件中。注意:我使用这个名称是为了确保它是最后一个检查的虚拟主机,因为我还有我的默认虚拟主机(www.domain.com 的默认值)和我的 webmail 的虚拟主机(webmail.domain 的 001-webmail) .com)。
这是“999-catchall”文件的内容:
<VirtualHost *:80>
# catch...
ServerName domain.com
ServerAlias domain2.com domain3.com *.domain.com *.domain2.com *.domain3.com
# ...and redirect
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com$1 [R=301,L]
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
此配置适用于 domain.com、domain2.com、*.domain2.com、domain3.com 和 *.domain3.com,但不适用于 * .domain.com 。示例:如果我输入 blabla.domain2.com,我会被重定向到 www.domain.com,但如果我输入 blaba.domain.com,我不会(我只是有一个“服务器未找到”错误)。
我的方法正确吗?你看到我的错误在哪里了吗?
编辑:我的错误,我的 DNS 服务器没有为 *.domain.com 正确配置。所以这个配置有效,如果它可以帮助想要做同样事情的人。
我不是 Apache 专家,但考虑过改变:
ServerName www.domain.com
ServerAlias domain.com domain2.com domain3.com *.domain.com *.domain2.com *.domain3.com
Run Code Online (Sandbox Code Playgroud)
编辑:在重新阅读OP时,看起来您已经在不同的文件中配置了www.domain.com,我认为这是不允许的。然而,这可能是问题的一部分。如果我没听错的话,www.domain.com 响应来自该文件,而不是此处发布的配置。