显示不带 www 的 / 索引,带 www 则可正常运行

显示不带 www 的 / 索引,带 www 则可正常运行

我正在使用 Python、Flask 和 Apache,但我遇到了问题。当我尝试使用 www 访问我的网站时,一切正常。但是,当我删除 www 时,网站会显示“/ 的索引”,旁边是空的文件列表。我已经阅读了所有可能的解决方案,但对我而言,没有任何解决方案有效。我正在使用 WSGI,这意味着 DocumentRoot 无关紧要,因为我使用的是 WSGIScriptAlias 变量。我按照说明使用 ServerAlias - 没有帮助。我在我的 dns 选项中设置了 2 个单独的 A 记录,都指向同一个 ip。当我使用和不使用 www ping 网站时,显示的 ip 地址相同

<VirtualHost *:80>
    ServerName mysite.com
    ServerAlias www.mysite.com
    WSGIScriptAlias / /var/www/mysite/mysite.wsgi
    <Directory /var/www/mysite/mysite/>
        Order allow,deny
        Allow from all
    </Directory>
    Alias /static /var/www/mysite/mysite/app/static
    <Directory /var/www/mysite/mysite/app/static/>
        Order allow,deny
        Allow from all
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
... 

</VirtualHost>

有任何想法吗?

这是“apachectl -S”命令的输出:

VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server mysite.com (/etc/apache2/sites-enabled      /000-default.conf:1) 
     port 80 namevhost mysite.com (/etc/apache2/sites-enabled    /000-default.conf:1)
     port 80 namevhost mysite.com (/etc/apache2/sites-enabled    /mysite.conf:1)
             alias www.mysite.com
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex watchdog-callback: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl 
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

答案1

似乎 /etc/apache2/sites-enabled/000-default.conf 首先符合您的要求。远程此文件可能会有所帮助。

更新

是否保留默认虚拟主机取决于您和您想要什么。如果您需要与您托管的域完全匹配,则默认虚拟主机将管理发送到您的服务器且不属于任何域的所有请求。此类请求的示例可以是您仅将服务器的 IP 放入浏览器。

但是在某些情况下,禁用默认虚拟主机是可以的。例如:您托管多个域,所有域都使用相同的文档根目录。并且您想在不重新配置 apache 的情况下添加/删除域。

为了理解虚拟主机匹配过程,我建议阅读以下文档:https://httpd.apache.org/docs/2.4/vhosts/details.html

相关内容