如何去掉apache中所有主機的www?

如何去掉apache中所有主機的www?

我讀過有關此事的主題。但是,它們僅適用於單一主機。

我希望對當前和未來網域的所有伺服器有一個統一的規則。

基本上,我想從所有請求中刪除 www,只留下可訪問的網域。

Apache 也提供 HTTPS,那麼如何將其應用到所有伺服器上呢?

謝謝!

http://www.example.com >> http://example.com
https://www.example.com >> https://example.com

瑪麗亞

答案1

您所描述的內容(看起來)mod_rewrite在特定程度上是不可能使用的。

來自多個“級別”的配置不會堆疊在 中mod_rewrite,因此主伺服器配置中定義的規則集不會自動導入並應用於委託給<VirtualHost>.

但是,假設您無論如何都必須<VirtualHost>在某個時刻分配 ,如果您不打算在主體內有任何其他規則<VirtualHost>(如果它們在.htaccess或 一個<Directory>部分中,那就沒問題了),您可以使用下列的。

在主要配置中,我們將採用我的回答這個相關問題並應用它:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.
RewriteCond %{HTTPS}s ^on(s)|off
RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www\.)?(.+)$
RewriteRule ^ %1%3%{REQUEST_URI} [R=301,L]

然後,在我們的每個<VirtualHost>部分中,我們可以使用RewriteOptions指示:

RewriteEngine On
RewriteOptions inherit

當然,您也可以簡單地將規則集<VirtualHost>全部複製到每個規則集,但這會將相關規則集保留在單一位置。

請注意,我建議在這種情況下直接不要添加附加規則的原因<VirtualHost>是繼承的規則已包含在內無論您在配置的當前等級中定義了什麼,這都可能會產生意想不到的副作用。

相關內容