2010-09-20 61 views
2

我想重定向到使用只有滿足一定條件的mod_rewrite的https:如何使用mod_rewrite有條件地重定向到https?

如果網址不包含單詞「管理員」 和網址中包含的任何部分字符串「XYZ」( URL,包括查詢字符串)

這似乎並不工作:

RewriteCond %{REQUEST_URI} xyz [NC,OR] 
RewriteCond %{QUERY_STRING} xyz [NC] 
RewriteCond %{REQUEST_URI} !administrator [NC] 
ReWriteCond %{HTTPS} != on 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [NC,R,L] 
+0

在你的'%[HTTPS}!= on'條件下等號後的空格是否在那裏?由於解析指令的方式,它會導致內部服務器錯誤。 – 2010-09-20 16:19:20

+0

@Tim:I不要猜測* HTTPS *只能是'on'或'off'。此外,空格分隔指令「參數」,文字空間必須用'\'轉義或放在引號中。 – Gumbo 2010-09-21 14:34:49

回答

0

我結束了使用編碼解決方案,因爲我無法讓它與mod_rewrite一起使用。 :(

1

試試這個規則:

RewriteCond %{THE_REQUEST} !administrator 
RewriteCond %{THE_REQUEST} xyz 
RewriteCond %{HTTPS} !=on 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [R,L] 

測試request lineTHE_REQUEST更容易,因爲它包含路徑和查詢。但請確保您的xyz不是methodHTTP version的一部分。

相關問題