Apache-2.2
WWW 和非 WWW 的虛擬 DocumentRoot 配置 - 沒有重定向
我搜尋了很多但找不到答案
在 Apache 中設置動態虛擬主機時,您可以執行以下操作:
RewriteEngine On # a ServerName derived from a Host: header may be any case at all RewriteMap lowercase int:tolower ## deal with normal documents first: # allow Alias /icons/ to work - repeat for other aliases RewriteCond %{REQUEST_URI} !^/icons/ # allow CGIs to work RewriteCond %{REQUEST_URI} !^/cgi-bin/ # do the magic RewriteRule ^/(.*)$ /var/www/domains/${lowercase:%{SERVER_NAME}}/html/$1 ## and now deal with CGIs - we have to force a MIME type RewriteCond %{REQUEST_URI} ^/cgi-bin/ RewriteRule ^/(.*)$ /var/www/domains/${lowercase:%{SERVER_NAME}}/cgi-bin/$1 [T=application/x-httpd-cgi]
問題是,您需要創建 2 個文件夾:example.com 和 www.example.com(或創建一個和指向它的符號連結)
什麼是可以避免創建這兩個文件夾的重寫規則?(或符號連結)
這個問題也適用於 NGINX
像這個問題:Apache vhost 有和沒有’www’? 我不想使用 *.example.com
添加另一個重寫規則,它應該在配置文件中的另一個之前:
RewriteCond %{SERVER_NAME} ^www\.(.*) RewriteRule ^/(.*)$ /www/hosts/${lowercase:%1}/docs/$1
您在這裡所做的是將域名與正則表達式進行匹配。如果域名以“www.”開頭,則在“www.”之後的所有內容。將儲存在變數 %1 中。在下一行中,您將重新使用該變數而不是整個 ServerName。