2014-12-25 63 views
2

我正在使用symfony2框架調用app.php文件爲每個頁面,我用htaccess MOD重寫,我試圖寫htaccess重定向兩頁(動態URL ),以HTTPS和現場常規HTTP的休息,這是我的立場是現在:htaccess重寫URL到HTTPS並刪除文件名

<IfModule mod_rewrite.c> 
    RewriteEngine on 

    RewriteCond %{HTTPS} !=on 
    RewriteRule ^(payment|withdraw)(/|$) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA] 

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

    #RewriteCond %{HTTPS} =on 
    #RewriteRule !^(payment|withdraw)(/|$) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA] 

</IfModule> 

這適用於添加HTTPS的特定頁面,但如果我添加註釋掉線重定向其餘的頁面正常http它打破了第一部分並且比 http://www.example.com/payment/item_1變成http://www.example.com/app.php/payment/item_1而不是https://www.example.com/payment/item_1

回答

1

重新排序的規則,你必須保持重定向規則之前,內部重寫的:

<IfModule mod_rewrite.c> 
    RewriteEngine on 

    RewriteCond %{HTTPS} off 
    RewriteCond %{THE_REQUEST} /(payment|withdraw)[/\s] 
    RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NC] 

    RewriteCond %{HTTPS} on 
    RewriteCond %{THE_REQUEST} !/(payment|withdraw)[/\s] 
    RewriteRule^http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NC] 

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

</IfModule> 
+0

感謝您的評論,但是這個代碼仍然有同樣的問題。 – user3387359

+0

仍然是同樣的問題 – user3387359

+0

檢查另一個更新,但我相信你的問題是舊的瀏覽器緩存不規則。 – anubhava