2017-04-23 36 views
0

我想了解以下語法(見下面的使用環境):的RewriteCond%{SERVER_NAME}語法

RewriteCond %{SERVER_NAME} ^example\.com$ 

我有以上(與真實的域名來代替例如)在我的.htaccess文件。我想強制它成爲www.example.com。

該網站具有SSL,並且在GoDaddy的SSL安裝過程中添加了以下SSL編碼。所以我試圖與這兩種編碼一起工作,並改變爲使用SSL強制訪問www。

# BEGIN GD-SSL 
<IfModule mod_rewrite.c> 
Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{HTTPS} !=on 
RewriteCond %{HTTP_USER_AGENT} ^(.+)$ 
RewriteCond %{SERVER_NAME} ^example\.com$ 
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 
Header add Strict-Transport-Security "max-age=300" 
</IfModule> 
# END GD-SSL 

我試圖添加國防部重寫規則強制www,他們不工作。我認爲問題存在於RewriteCond%{SERVER_NAME}^example.com $ ,該問題未解決至「www」。我想我可能需要添加www。但是,我不確定這是否正確。
這是解決方案來改變ssl強制WWW在URL?還是我需要完全做其他事情?

RewriteCond %{SERVER_NAME} ^www\.^example\.com$ 

任何幫助將不勝感激。謝謝。

貝基

+0

澄清'%{HTTP_USER_AGENT} ^(+)$'。我的建議是使用'OR'標誌。 'RewriteCond%{HTTPS}!= on [OR]'\ n'RewriteCond%{SERVER_NAME} ^示例\ .com $'\ n'重寫規則^ https://www.example.com% {REQUEST_URI} [R = 301 ,L]' – Deadooshka

回答

0

要對陣雙方WWW非www主機在單行線,您可以使用下面的正則表達式:

^(www\.)?example\.com$ 

這符合www.example。 comexample.com

要強制SSL WWW,您可以使用此:

RewriteEngine on 

RewriteCond %{HTTPS} !on 
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ 
RewriteRule (.*) https://www.example.com/$1 [L,R,NE]