.htaccess переписать правило для принудительного перенаправления https на http

У меня есть основной домен https://www.domain.com или https://domain.com и подстановочный DNS, например https://domain.com/index.php?name=abcd перенаправляющий принудительно http://abcd.domain.com но у меня есть еще одна проблема: моя страница входа в систему – https://domain.com/login.php?name=abcd и я хочу, чтобы результат был принудительно http://domain.com/login.php?name=abcd но он не может перенаправлять по HTTP.

 RewriteEngine On #match either the www subdomain or no subdomain RewriteCond %{HTTP_HOST} ^(?:www.)?(?:domain\.com)$ #which request index.php RewriteCond %{REQUEST_URI} ^/index\.php #and contain a username paramater RewriteCond %{QUERY_STRING} ^(.*?)(?:^|&)name=([^&]+)(.*?)$ #then rewrite them to name.domain.com without the name parameter RewriteRule ^ http://%1.domain.com%{REQUEST_URI} [R,L] #match either the www subdomain or no subdomain RewriteCond %{HTTP_HOST} ^(?:www.)?(?:domain\.com)$ #which was requested without https RewriteCond %{HTTPS} off #then redirect to https RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] #Capture subdomain RewriteCond %{HTTP_HOST} ^([^.]+)\.(?:domain\.com)$ #If we're not working on www RewriteCond %{HTTP_HOST} !^(?:www.domain\.com)$ #If querystring doesn't contain name RewriteCond %{QUERY_STRING} !^(.*?)(?:^|&)name=([^&]+)(.*?)$ #Add username to querystring RewriteRule index.php index.php?name=%1 [L,QSA] 

этот код htaccess работает нормально, но я хочу, чтобы сценарий входа в htaccess


После уточнения в чате, это то, что мне нужно:

Все URL-адреса должны быть переписаны на https , кроме login.php , которые должны оставаться на http . Если login.php входит как https , login.php его на http .

Solutions Collecting From Web of ".htaccess переписать правило для принудительного перенаправления https на http"

У вас уже есть правило для переписывания на https , осталось только исключить login.php

 RewriteCond %{HTTP_HOST} ^(?:www.)?(?:domain\.com)$ RewriteCond %{HTTPS} off RewriteCond %{REQUEST_URI} !^/login\.php$ RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L] 

Если login.php запрашивается с помощью https , login.php его на http

 RewriteCond %{HTTP_HOST} ^(?:www.)?(?:domain\.com)$ RewriteCond %{HTTPS} on RewriteRule ^login.php$ http://%{HTTP_HOST}%{REQUEST_URI} [R=302,L] 

Наконец, небольшая подсказка: никогда не проверяйте с включенным 301 , см. Этот ответ. Советы по отладке .htaccess переписывают правила для деталей.

попробуй это :

 RewriteEngine On RewriteCond %{HTTPS} on RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}