[英]301 Redirect on Apache: conflict with HTTP => HTTPS Rewrite rules
我對運行的Apache 2 Amazon EC2實例Ubuntu的18.04服務器,並安裝SSL證書,這是我專門使用托管虛擬主機的的.TLD變化policymakr.com域,共享同一個固定的IP。
我希望配置實現以下目標:
(我這樣做的原因是因為我出於SEO的目的要通過301重新映射tld,而我的WordPress網站的主機無法實現此目的,因為該網站托管在共享服務器上。)
我開始設置頂級域名,他們重定向正確。 Tld(.net,.org,.info和.io)的.conf文件都相同,如下所示:
<VirtualHost *:80>
ServerAdmin webmaster@policymakr.com
ServerName www.policymakr.[tld]
DocumentRoot /var/www/html/policymakr.[tld]/
ErrorLog /var/www/logs/error.log
Redirect 301 / https://www.policymakr.com/
</VirtualHost>
設置好tld虛擬主機后,“ 301重定向”全部開始正常運行。
由於需要安裝外部SSL證書(Amazon證書似乎無法附加到EC2實例)會稍微增加一些復雜性,因此我繼續為policymakr.domains設置虛擬主機,以使其持久。
我設置的policymakr.domains虛擬主機如下所示:
<VirtualHost *:80>
ServerAdmin webmaster@policymakr.com
ServerName www.policymakr.domains
ServerAlias policymakr.domains
DocumentRoot /var/www/html/policymakr.domains/
ErrorLog /var/www/logs/error.log
RewriteEngine on
RewriteCond %{HTTP_HOST} ^policymakr\.domains
RewriteRule ^(.*)$ http://www.policymakr.domains/$1 [R=permanent,L]
</VirtualHost>
<VirtualHost *:443>
ServerName www.policymakr.domains
ServerAlias policymakr.domains
DocumentRoot /var/www/html/policymakr.domains/
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/[crt file name]
SSLCertificateKeyFile /etc/apache2/ssl/private/[private key]
SSLCertificateChainFile /etc/apache2/ssl/[bundle file]
RewriteEngine on
RewriteCond %{HTTPS_HOST} ^policymakr\.domains
RewriteRule ^(.*)$ https://www.policymakr.domains/$1 [R=permanent,L]
</VirtualHost>
此后,policymakr.domains的重定向功能完全按照我的要求運行(即,非www到www,http到https的非www),但是其他tld的301重定向已停止工作。 相反,它們現在都重定向到https://www.policymakr.domains 。
我基本上不知道我在這里出了什么問題。
整個配置實際上在幾個小時后就可以工作了,這可能是某種緩存問題。 我添加的唯一更改是每個.conf
文件中的ServerAlias policymakr.[tld]
條目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.