更改ServerAlias为我提供了一个页面索引

时间:2014-09-06 01:46:33

标签: .htaccess apache2.4

对于服务器相关的东西,我有点新手,但基本上我现在遇到最令人沮丧的问题......

更改前的配置文件:

<VirtualHost *:80>
        ServerAdmin xyz@gmail.com
        DocumentRoot /var/www/xyz.net/public_html
        ServerName www.xyz.net
        ServerAlias xyz.net

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<Directory "/var/www">
        AllowOverride All
        Order allow,deny
        allow from all
</Directory>

哪个很棒,而且很有效。虽然,去www.xyz.net会加载,你可以看到内容,但是,去xyz.net会显示一个Index Of page。所以我更改了配置文件,只需切换名称和别名:

<VirtualHost *:80>
        ServerAdmin xyz@gmail.com
        DocumentRoot /var/www/xyz.net/public_html
        ServerName xyz.net
        ServerAlias www.xyz.net

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<Directory "/var/www">
        AllowOverride All
        Order allow,deny
        allow from all
</Directory>

然而,这似乎不起作用,为什么我仍然得到一个索引页面?为什么www.xyz.net拥有所有页面内容,但xyz.net却没有?!我真的很困惑。

我一直试图让www重定向到非www,起初我认为这是我的.htaccess文件的错误,但在尝试了各种重定向方法甚至在PHP中进行后,我认为它是阿帕奇搞砸了我。所以这是我用于htaccess的代码:

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

修改: 感谢所有的帮助,但是在www.xyz.net上一切正常,但是在xyz.net上显示了一个Index Of页面,列表中没有索引项,所以可能只是一个空网页

1 个答案:

答案 0 :(得分:0)

检查另一个虚拟主机是否存在ServerName: xyz.net。在这种情况下,其他虚拟主机可以优先于您的虚拟主机。

在基于Linux的系统中,有一个默认配置文件,可以包含此ServerName。默认情况下,它的位置为/etc/apache2/sites-available/default。该文件也可以命名为000-default.conf