Intereting Posts

Перенаправить HTTPS на HTTP, если параметр querystring отсутствует через htaccess

Я хотел бы перенаправить HTTPS на HTTP только в том случае, если отсутствуют следующие параметры запроса:

https://www.example.com/index.php?p=login
https://www.example.com/index.php?p=signup
https://www.example.com/index.php?p=cart
https://www.example.com/index.php?p=one_page_checkout

То есть любой запрос, отличный от этого, должен перенаправляться с HTTPS на HTTP. Я хочу убедиться, что только мой путь проверки – это HTTP.

Можно ли это сделать, просто используя .htaccess с RewriteCond и RewriteRule ?

Solutions Collecting From Web of "Перенаправить HTTPS на HTTP, если параметр querystring отсутствует через htaccess"

Добавьте это в файл htaccess в свой корень документа, предпочтительно выше любых правил, которые могут быть уже существуют:

 RewriteEngine On RewriteCond %{QUERY_STRING} !(^|&)p=(login|signup|cart|one_page_checkout)(&|$) RewriteCond %{HTTPS} on RewriteRule ^index\.php$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R] RewriteCond %{QUERY_STRING} (^|&)p=(login|signup|cart|one_page_checkout)(&|$) RewriteCond %{HTTPS} off RewriteRule ^index\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R] 

Чтобы сделать это постоянным перенаправлением, добавьте a =301 после R в квадратных скобках.

Включите mod_rewrite и .htaccess через httpd.conf а затем поместите этот код в свой .htaccess в каталоге DOCUMENT_ROOT :

 Options +FollowSymLinks -MultiViews # Turn mod_rewrite on RewriteEngine On RewriteBase / RewriteCond %{HTTPS} on RewriteCond %{QUERY_STRING} !(^|&)p=(login|signup|cart|one_page_checkout)(&|$) [NC] RewriteRule ^(index\.php)?$ http://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L] 

Просто поместите ниже строки в ваш файл .htaccess: –

 RewriteCond %{HTTPS} !=on RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]