2010-07-26 38 views
0

我有以下問題:與重寫模塊和否定模式問題

  • 如果url 包含關鍵字「formulario-」,這是一個HTTP方面,我想重定向到版本號爲的https版本。
  • 如果url 不包含關鍵字「formulario-」,這是一個HTTPS連接,我想redirecto到HTTP版本。

我嘗試以下的.htaccess,但它正確好好嘗試一下工作:

RewriteEngine On 

RewriteCond %{HTTPS} =on 
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} 

RewriteCond %{HTTPS} !=on 
RewriteRule ^formulario-(.*) http://%{HTTP_HOST}%{REQUEST_URI} 

感謝您的幫助!

回答

1

未經檢驗的,但總體思路是:

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule formulario- https://%{HTTP_HOST}%{REQUEST_URI} [R,L,QSA] 

RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_URI} !formulario- 
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R,L,QSA] 

該理論是,你不能否定一個RewriteRule,但你可以否定一個RewriteCond

1

究竟什麼是行不通的?

想到的一件事是:嘗試使用[L] flag作爲第一條規則,以便apache停止處理第二條規則,如果第一條規則適用。

雖然我不確定。您可能需要某種方式來測試用戶是否已被重定向過。