2013-03-17 56 views
0

我已經成功通過的.htaccess這些規則切換我的所有網站的https:的.htaccess力整個網站的https

RewriteCond %{HTTPS} off [NC] 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,QSA] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /app.php [QSA,L] 

現在我有一個問題,因爲使用POST一些第三方服務網址如下:

http://sub.mydomain.com/agreg/sms/service 

被拒絕是因爲它們被重定向,現在被GET。

我想在每個網址上使用^/agreg/方案禁用這個「強制https」的東西。我試圖

RewriteCond %{HTTPS} off [NC] 
RewriteCond %{REQUEST_URI} !^/agreg 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,QSA] 

但現在重定向到http://sub.mydomain.com/app.php

什麼我錯過這裏?

非常感謝您的幫助!

回答

2

問題:

我想停用與 ^/agreg /方案的每個URL這個 「力https」 開頭的東西。我試圖

RewriteCond %{HTTPS} off [NC] 
RewriteCond %{REQUEST_URI} !^/agreg 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,QSA] 

但現在重定向到http://sub.mydomain.com/app.php


嗯,這是根據規則有效的結果。

還有第二條規則將所有內容重定向到app.php。這一個:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /app.php [QSA,L] 

雖然傳入的URL http://sub.mydomain.com/agreg/sms/serviceSo,例如,從第1章排除,在第二規則被改寫。

SOLUTION:

假設預期的行爲是可排除來自兩個規則包含字符串agreg任何URL,它應該是這樣的:

RewriteCond %{HTTPS} off [NC] 
RewriteCond %{REQUEST_URI} !/agreg  [NC] 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,QSA] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !/agreg  [NC] 
RewriteRule ^(.*)$ /app.php [QSA,L] 

重寫條件只適用於下一規則。有必要在最後一個規則塊中添加相同的NOT條件。

+0

嗨@faa,謝謝你的回答!乍一看似乎是正確的。 ^/agreg不被https捕獲。但我需要通過第二條規則來抓住它。我正在運行Symfony2框架,並且^/agreg/something不是真正的路徑,而是由app.php上Symfony2路由器解釋的東西。所以,我的問題是我需要它來打開app.php,但不能重寫url作爲app.php我是否克萊爾? ;) – guillaumepotier 2013-03-18 11:02:57

+0

是的。你想在瀏覽器的地址欄中顯示什麼? – 2013-03-18 15:12:01

+0

隨着你的規則,/ agreg /無論停留在酒吧。但不是內部指向/app.php(哪個進程請求)。所以我在這些url上找不到404。 – guillaumepotier 2013-03-18 17:19:28