Apache-2.2

Apache VirtualHost 中的重定向 URL?

  • February 19, 2017

我有一個帶有 Apache 的專用伺服器,我在上面設置了一些 VirtualHosts。我已經設置了一個來處理 www 域以及非 www 域。

我的 www 的 VH .conf 文件:

<VirtualHost *>
 DocumentRoot /var/www/site
 ServerName www.example.com
 <Directory "/var/www/site">
   allow from all
 </Directory>
</VirtualHost>

有了這個.htaccess

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

有沒有一種簡單的方法可以將 www 重定向到非 www 版本?目前我將兩個版本發送到相同的版本DocumentRoot並使用.htaccess,但我確信我必須能夠在 VirtualHost 文件中做到這一點。

事實證明mod_rewrite,除了規則之外,VirtualHosts 文件中的規則很好RewriteBase。我最終得到了這個:

<VirtualHost *>
 ServerName www.example.com
 RewriteEngine on
 RewriteCond %{HTTP_HOST} ^www.example.com
 RewriteRule ^/(.*)$ http://example.com/$1 [L,R=301]
</VirtualHost>

編輯:根據 joschi 在評論中的建議,我現在使用以下Redirect指令使用這個簡化版本mod_alias

<VirtualHost *>
 ServerName www.example.com
 Redirect 301 / http://example.com/
</VirtualHost>

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