2012-01-19 64 views
1

我有我的.htaccess文件的以下代碼,我從這裏拿起並嘗試調整它,因爲我從.htaccess瞭解,但我不能似乎得到它的工作(或者瀏覽器已經緩存了它,但我似乎無法清除它)。通用非www到www和非http到https

Options -Indexes 
Options +FollowSymlinks 

<IfModule mod_rewrite.c> 

########## FORCE SSL ########## 
RewriteEngine On 
RewriteBase/

# Non-secure requests to www.domain.com should redirect to https://www.domain.com 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^www\.%{HTTP_HOST} [NC] 
RewriteRule ^(.*)$ https://www\.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

# All secure (HTTPS) traffic should redirect to https://www.domain.com 
RewriteCond %{HTTPS} on 
RewriteCond %{HTTP_HOST} !^www\.%{HTTP_HOST} [NC] 
RewriteRule ^(.*)$ https://www\.%{HTTP_HOST}/$1 [L,R=301] 

</IfModule> 

我希望把它作爲一般的可能,所以我可以簡單地複製並粘貼到任何網站,我做出這樣就無需每次編輯它 - 我想我也能做到這一點在PHP,但我認爲如果.htaccess也在那裏,那會很好。

另一個問題是,如果我要去www.domain.com/.htaccess或者我需要在'拒絕所有'類型的事情中覆蓋它,可以閱讀.htaccess嗎?

回答

1

RewriteCond的第二個參數必須是正則表達式,因此它不能包含變量。

嘗試增加在地方的規則下,以你的.htaccess文件你有

#capture top level domain (.com or .co.uk) 
RewriteCond %{HTTP_HOST} ([-_a-zA-Z0-9]+\.([a-zA-Z]{2,5}|co\.uk))$ [NC] 
RewriteCond %{HTTP_HOST} (www\.)?(.+)$ [NC] 
RewriteRule^- [E=MY_TLD:%2] 

# Non-secure requests to www.domain.com should redirect to https://www.domain.com 
RewriteCond %{HTTPS} off 
RewriteRule^https://www\.%{ENV:MY_TLD}%{REQUEST_URI} [L,R=301] 

# All secure (HTTPS) traffic should redirect to https://www.domain.com 
RewriteCond %{HTTPS} on 
#if host does not start with www 
RewriteCond %{HTTP_HOST} !^www\.[-_a-zA-Z0-9]+\.([a-zA-Z]{2,5}|co\.uk)$ [NC] 
RewriteRule^https://www\.%{ENV:MY_TLD}%{REQUEST_URI} [L,R=301] 
+0

爲.com和.co.uk域名(因爲我看到TLD提到)做這項工作? – MrJ

+0

另外 - 只需在RewriteBase之後替換每一個,或者擺脫它呢? – MrJ

+0

@MrJ編輯以匹配anydomain.com或anydomain.co.uk頂級域名。必要時可以添加其他人。是的,並且在'RewriteEngine on RewriteBase /' –

0

最短的版本是:

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTPS} off [OR] 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteCond %{HTTP_HOST} (www\.)?(.+)$ [NC] 
RewriteRule^https://www\.%2%{REQUEST_URI} [L,R=301] 

只(有點)下跌將是subdomain.example.com被重定向到www.subdomain.example.com

相關問題