Dot-Htaccess

將 www 添加到域,但不添加到特定域

  • December 8, 2016

我的.htaccess文件中有以下程式碼:

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

上面的程式碼用於添加www到域,如果它沒有www. 但是我有一個域,例如:(myloadbalancername-432566808.us-west-1.elb.amazonaws.com來自 AWS Elastic Load Balancer 的 DNS)並且該域不適用於www. 那麼,除了特定域之外,如何www為所有域請求添加?

RewriteCond %{REQUEST_URI} !myloadbalancername
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

我嘗試使用上面的程式碼,檢查域名是否沒有單詞,然後檢查域是否沒有www,但沒有成功。我是初學者,.htaccess所以我不知道我做錯了什麼。

與您的其他條件一樣,檢查hostwww中是否存在,您需要再次檢查server 變數,而不是- 它僅包含 URL 路徑。HTTP_HOST``REQUEST_URI

嘗試以下操作:

RewriteCond %{HTTP_HOST} !^myloadbalancername
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L]

我還添加了字元串錨點 ( ^) 的開頭,因此如果它會失敗(更有效),它將更快地失敗,而不是在主機字元串中的任何位置搜尋“myloadbalancername”。^(.*)$此外,如果您要擷取整個模式(例如,與 相同) ,則無需包含錨點(.*)

在測試之前清除所有中間記憶體,因為瀏覽器會記憶體任何錯誤的 301。

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