2014-10-02 3 views
2

Я хочу, чтобы перенаправить все запросы HTTPS к HTTP, за исключением адресов, которые содержат эту строку: «/ счета/купить премиум».htaccess HTTPS перенаправлять за исключением одной страницы Laravel

Вот мой файл .htaccess:

RewriteEngine On 
RewriteCond %{HTTPS} !=on 
RewriteCond %{REQUEST_URI} ^/account/buy-premium [NC] 
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L] 

RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_URI} !^/account/buy-premium [NC] 
RewriteRule ^(.*)$ http://%{SERVER_NAME}%{REQUEST_URI} [R,L] 

# Redirect Trailing Slashes... 
RewriteRule ^(.*)/$ /$1 [L,R=301] 

# Handle Front Controller... Default Laravel conf 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [L] 

https: // example.com/test-page перенаправляет на HTTP: // example.com/test-page (хорошо)

Но

https://example.com/account/buy-premium/991 перенаправляет на http://example.com/index.php (плохо - не редирект не нужен здесь)

я не могу найти какое-либо решение для предотвращения перенаправления на страницу/купить-премиум
Пожалуйста, помогите

ответ

4

Вам нужно будет использовать THE_REQUEST переменная вместо REQUEST_URI с REQUEST_URI изменится на /index.php по вашему последнему правилу.

RewriteEngine On 
RewriteCond %{HTTPS} !=on 
RewriteCond %{THE_REQUEST} \s/account/buy-premium [NC] 
RewriteRule^https://%{SERVER_NAME}%{REQUEST_URI} [R,L] 

RewriteCond %{HTTPS} on 
RewriteCond %{THE_REQUEST} !\s/account/buy-premium [NC] 
RewriteRule^http://%{SERVER_NAME}%{REQUEST_URI} [R,L] 

# Redirect Trailing Slashes... 
RewriteRule ^(.*)/$ /$1 [L,R=301] 

# Handle Front Controller... Default Laravel conf 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [L] 
+0

Отлично! Большое спасибо! – user3842742

+0

Добро пожаловать, рад, что это сработало. – anubhava

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