2010-06-25 65 views
3

我有這個.htaccess文件,但我希望它只在我在現場的時候這樣做。.htaccess if/else取決於{SERVER_NAME}?

有什麼辦法,我可以:我試着用SetEnvIfNoCaseIfDefine沒有成功合作

// if server_name looks like example.com to this 
// else dont run this bit 
RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} (auth|register|secure|payment|admin|trading_careers) 
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 

RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !(auth|register|secure|payment|admin|trading_careers) 
RewriteRule ^(.*)$ http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 

。真的不知道是否有可能做我想做的事。

預先感謝您。

EDIT(對於未來的讀者解決方案爲例):

// if https is off 
RewriteCond %{HTTPS} off 
// if server_name like example.com (case insensitive) OR 
RewriteCond %{SERVER_NAME} =example.com [NC,OR] 
// server_name like www.example.com (case insensitive)... 
RewriteCond %{SERVER_NAME} =www.example.com [NC] 
RewriteCond %{REQUEST_URI} (auth|register|secure|payment|admin|trading_careers) 
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 

感謝您的幫助很大。如果您使用的活動網站不同的主機名

RewriteCond %{SERVER_NAME} =www.example.com 

回答

3

您可以將該條件添加到您的規則

只是檢查各條件也HTTP_HOST:

RewriteCond %{HTTP_HOST} www.example.com [NC] 
RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} (auth|register|secure|payment|admin|trading_careers) 
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 
+0

@馬庫斯亞當斯:不,我的意思是*弗蘭克請求* SERVER \ _NAME *。 – Gumbo 2010-06-25 17:15:02

+0

@Marcus Adams:在''上下文中也允許使用'ServerName'。 – Gumbo 2010-06-25 17:21:33

+0

就在我眼前...我怎麼看不到它! ;) 非常感謝! – Frankie 2010-06-25 17:24:32

1

+0

感謝您的意見。你們兩個都應該得到了正確的答案,但是Marcus更接近SERVER_NAME的目標。我也相信SERVER_NAME應該總是不利於HTTP_HOST,因爲HTTP_HOST來自客戶端(右)? – Frankie 2010-06-25 17:26:11

+2

聖潔的廢話。我必須將所有.htaccess更改爲SERVER_NAME。 – 2010-06-25 17:30:00