Domain-Name-System

顯示 / 沒有 www 的索引,使用 www 正常工作

  • November 10, 2016

我正在使用 Python、Flask 和 Apache,但我被困住了。當我嘗試使用 www 訪問我的網站時,它工作正常。但是,當我刪除 www 時,該網站顯示“/ 的索引”,接下來是一個空的文件列表。我已經閱讀了所有可能的解決方案,在我的情況下沒有任何效果。我正在使用 WSGI,這意味著 DocumentRoot 無關緊要,因為我使用的是 WSGIScriptAlias 變數。我按照指示使用 ServerAlias - 沒有幫助。我在我的 dns 選項中設置了 2 條單獨的 A 記錄,它們都指向同一個 ip。當我用 www 和不帶 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

似乎 /etc/apache2/sites-enabled/000-default.conf 首先匹配您的請求。遠端這個文件,它可能會有所幫助。

更新

是否保留預設虛擬主機取決於您和您想要什麼。如果您需要與您託管的域完全匹配,預設虛擬主機將管理所有發送到您的伺服器且不屬於任何域的請求。如果您只是將伺服器的 IP 放入瀏覽器,則可以是此類請求的範例。

但是,在某些情況下,可以禁用預設虛擬主機。範例:您託管多個域,所有域都使用相同的文件根目錄。並且您想在不重新配置 apache 的情況下添加/刪除域。

為了理解虛擬主機匹配過程,我建議閱讀以下文件:https ://httpd.apache.org/docs/2.4/vhosts/details.html

引用自:https://serverfault.com/questions/814055