Ssl

使用 Apache2 將子域重定向到 HTTPS 中的子域

  • May 9, 2017

我有這些子域:

link.domain.com
links.domain.com

我想重定向link.domain.comlinks.domain.com. 為此,我使用了與此處所述相同的方法:將子域重定向到子域 Apache2並且它可以工作。

links.domain.com我為Let’s Encrypt安裝了一個 TLS 證書,我可以links.domain.com在 HTTPS 中完美訪問。我希望從link.domain.comto的重定向links.domain.com在 HTTPS 中也有效。

這是我的conf文件:

<IfModule mod_ssl.c>
  <VirtualHost *:443>
     DocumentRoot /var/www/links/
     ServerName links.domain.com

     <Directory "/var/www/links/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Allow from all
     </Directory>

     ErrorLog ${APACHE_LOG_DIR}/error_links.log
     CustomLog ${APACHE_LOG_DIR}/access_links.log combined 

     # Possible values include: debug, info, notice, warn, error, crit,
     # alert, emerg.
     LogLevel warn

     SSLCertificateFile /etc/letsencrypt/live/links.domain.com/fullchain.pem
     SSLCertificateKeyFile /etc/letsencrypt/live/links.domain.com/privkey.pem
     Include /etc/letsencrypt/options-ssl-apache.conf
  </VirtualHost>
</IfModule>

我已經嘗試過以下方法:

  • 添加

ServerAlias link.domain.com RedirectMatch permanent ^link.domain.com/(.*)$ https://links.domain.com/$1

行後ServerName links.domain.com

  • 添加

<VirtualHost *:443> ServerName link.domain.com RedirectMatch permanent ^/(.*)$ https://links.domain.com/$1 </VirtualHost>

在已經定義的 VirtualHost 之前和之後。

沒有人工作。

你有什麼主意嗎 ?

您需要在兩個VirtualHosts中都有 SSL 配置,這RedirectMatch不是必需的。嘗試:

<IfModule mod_ssl.c>
  <VirtualHost *:443>
     ServerName link.example.com

     SSLCertificateFile /etc/letsencrypt/live/links.example.com/fullchain.pem
     SSLCertificateKeyFile /etc/letsencrypt/live/links.example.com/privkey.pem
     Include /etc/letsencrypt/options-ssl-apache.conf

     Redirect / https://links.example.com/
  </VirtualHost>
</IfModule>

請注意,如果您的證書的主題備用名稱NET::ERR_CERT_COMMON_NAME_INVALID中也沒有,您仍然會收到 TLS 錯誤。link.example.com

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