簡體   English   中英

apache在https中從無www到www域重定向

[英]apache redirect in https from none www to www domain

編輯: Redirect permanent "/" "https://%{HTTP_HOST}/"實際上在第一次重定向中不起作用。 它似乎有效,因為我的 CDN 自動將 http 重定向到 https:,而不是因為我的設置。 對困惑感到抱歉。


我正在嘗試編寫 Apache httpd 配置文件以將所有 http 流量重定向到 https,並且還需要將無 www 域重定向到 www。

例如
http://example.com http://www.example.com https://example.com
都應該重定向到
https://www.example.com

這是我所做的:

<VirtualHost ipaddress:80>  
  ServerName example.com  
  ServerAlias www.example.com  

  Redirect permanent "/" "https://%{HTTP_HOST}/"
</VirtualHost>

這部分有效。 所有 http 都重定向到 https。 請注意,%{HTTP_HOST} 已解析並替換。 現在我需要將無 www 重定向到 www

<VirtualHost ipaddress:443>
  SSLEngine on
  ServerName www.example.com
  ServerAlias example.com

  <If "%{HTTP_HOST} !~ /www/">
     Redirect permanent "/" "https://www.%{HTTP_HOST}/"
  </If>

  ...
</VirtualHost>

當我訪問https://example.com它會重定向,但這次它被重定向到https://www.%{HTTP_HOST}/而不是https://www.example.com/

現在如果我使用
Redirect permanent "/" "https://www.example.com/"
然后https://example.com將被重定向到https://www.example.com

所以看起來 %{HTTP_HOST} 沒有在第二個 VirtualHost 塊中被替換。

如何使它正確?

您可以嘗試使用重寫規則

 RewriteEngine On
 RewriteCond %{HTTP_HOST} ^https://example.com [NC]
 RewriteRule ^(.*)$ https://www.example.com/$1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM