2017-03-09 29 views
0

我有這個在我的Apache .conf文件:Apache的重定向無法正常工作

<VirtualHost *:443> 
    ServerName example.com 
    DocumentRoot /var/www/html/example/ 
    SSLEngine on 
    SSLCertificatekeyFile /etc/letsencrypt/live/example.com/privkey.pem 
    SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem 
    SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem 
</VirtualHost> 
<VirtualHost *:443> 
Redirect 301 /recalls/recalls.html https://recallpatrol.com/recalls.html 
</VirtualHost> 

但沒有重定向正在發生的事情。我試圖防止任何人直接點擊recalls,這實際上並不存在。我無法弄清楚它來自哪裏,所以在此期間,我需要重定向。

+1

爲什麼你有相同的虛擬主機兩次?也許我會開始合併成一個。第二個VirtualHost沒有任何服務器名稱,所以我不知道Apache如何匹配它。重定向本身看起來不錯。 –

+0

@DawidFerenczy這個伎倆。有雙虛擬主機是問題。謝謝! – jonmrich

+1

不客氣。我已經添加了它作爲答案,以便可以幫助其他人更好。 –

回答

1

Apache使用ServerName匹配相應的虛擬主機,但您的第二個虛擬主機定義不包含任何內容,所以Apache從不匹配該虛擬主機並因此完全忽略它。

因此,如果兩個虛擬主機是相同的域,只是將它們合併成一個

<VirtualHost *:443> 
    ServerName example.com 
    DocumentRoot /var/www/html/example/ 
    SSLEngine on 
    SSLCertificatekeyFile /etc/letsencrypt/live/example.com/privkey.pem 
    SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem 
    SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem 

    Redirect 301 /recalls/recalls.html https://recallpatrol.com/recalls.html 
</VirtualHost>