2014-12-25 4 views
2

Я использую фреймворк symfony2, который вызывает файл app.php для каждой страницы, которую я удаляю с помощью перезаписи мод htaccess, я пытаюсь написать htaccess для перенаправления двух страниц (с динамическими URL-адресами) к протоколу HTTPS и остальной части сайта на регулярную HTTP, это где я стою, как сейчас:htaccess переписать url на https и удалить filename

<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

Reorder своих правил, вы должны соблюдать правила перенаправления Перед внутренних перезаписями:

<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

Смежные вопросы