1

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

我的配置文件被更改之前:

<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 会显示一个索引页面。所以我更改了配置文件,只是切换了名称和别名:

<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 中进行之后,我认为这是 Apache 搞砸了我超过。所以这是我用于 htaccess 的代码:

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

编辑:感谢所有帮助,但在 www.xyz.net 上一切正常,但是在 xyz.net 上Index Of显示了一个页面,并且列表中没有索引项目,所以大概它只是一个空网页。

4

1 回答 1

0

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

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

于 2014-09-06T02:39:36.900 回答