Redirect Apache将www.domain.com重定向到domain.com/domain

Redirect Apache将www.domain.com重定向到domain.com/domain,redirect,web,apache2,subdomain,virtualhost,Redirect,Web,Apache2,Subdomain,Virtualhost,我正在AmazonAWS上准备我的ubuntu服务器,以托管一个新网站。它使用Apache2。我以前做过这件事,没有任何问题,例如,为了欺骗一个朋友,我欺骗了google.com和www.google.com(编辑他的主机文件),不管有没有“www”,一切都很好 现在我买了一个域名'domain.com'和1&1,我已经配置了一个子域名'www.domain.com',我已经把它指向了我的服务器。dns记录很好,我检查过了。我还编辑了我的站点启用默认文件并添加了以下条目: <Virtual

我正在AmazonAWS上准备我的ubuntu服务器,以托管一个新网站。它使用Apache2。我以前做过这件事,没有任何问题,例如,为了欺骗一个朋友,我欺骗了google.com和www.google.com(编辑他的主机文件),不管有没有“www”,一切都很好

现在我买了一个域名'domain.com'和1&1,我已经配置了一个子域名'www.domain.com',我已经把它指向了我的服务器。dns记录很好,我检查过了。我还编辑了我的站点启用默认文件并添加了以下条目:

<VirtualHost *:80 >
    ServerName www.domain.com
    DocumentRoot /var/www/domain
</VirtualHost>

<VirtualHost *:80 >
    ServerName domain.com
    DocumentRoot /var/www/domain
</VirtualHost>

服务器名www.domain.com
DocumentRoot/var/www/domain
ServerName域名.com
DocumentRoot/var/www/domain
当我在浏览器中访问domain.com时,它工作正常,但当我访问www.domain.com时,我得到了domain.com/domain/,显然是404

我使用了telnet,发现当您请求主机的根页面www.domain.com时,服务器会发送301

我不知道为什么会发生这种情况,我尝试过对上述配置进行大量修改,如:

<VirtualHost *:80 >
    ServerAlias www.domain.com
    DocumentRoot /var/www/domain
</VirtualHost>

<VirtualHost *:80 >
    ServerAlias domain.com
    DocumentRoot /var/www/domain
</VirtualHost>

ServerAlias www.domain.com
DocumentRoot/var/www/domain
ServerAlias domain.com
DocumentRoot/var/www/domain


ServerName域名.com
DocumentRoot/var/www/domain
服务器名www.domain.com
DocumentRoot/var/www/domain


ServerName域名.com
服务器别名www.domain.com
DocumentRoot/var/www/domain
但它一直在发生

为了记录在案,这是我在恶搞中使用的东西,它仍然可以正常工作

<VirtualHost *:80 >
    ServerName google.com
    DocumentRoot /var/www/google
</VirtualHost>

<VirtualHost *:80 >
    ServerName www.google.com
    DocumentRoot /var/www/google
</VirtualHost>

服务器名google.com
DocumentRoot/var/www/google
服务器名www.google.com
DocumentRoot/var/www/google
我已经搜索了两天了,但我只找到了我正在使用的相同配置,没有解释为什么这不起作用

谢谢你的帮助


PS:此目录或任何父目录中都没有.htaccess文件。

以防有人输入此问题

我仍然不知道出了什么问题,但在文件中移动这些配置之后,它们神奇地开始正常工作

感谢每一位花时间阅读这个问题的人。

最好是

<VirtualHost *:80 >
    ServerName domain.com
    ServerAlias www.domain.com
    DocumentRoot /var/www/domain
</VirtualHost>

ServerName域名.com
ServerAlias www.domain.com
DocumentRoot/var/www/domain
您无法在服务器和Alias之间放置空格,因此我更改为显示给您

希望它能起作用

<VirtualHost *:80 >
    ServerName google.com
    DocumentRoot /var/www/google
</VirtualHost>

<VirtualHost *:80 >
    ServerName www.google.com
    DocumentRoot /var/www/google
</VirtualHost>
<VirtualHost *:80 >
    ServerName domain.com
    ServerAlias www.domain.com
    DocumentRoot /var/www/domain
</VirtualHost>