Regex .htaccess将所有http重定向到https,并以另一种方式重定向

Regex .htaccess将所有http重定向到https,并以另一种方式重定向,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,我需要将除一个请求外的所有请求重定向到https,如果使用https访问,则该请求应重定向到http。此外,我需要标准的php重写,以便所有的土地在index.php。将所有内容重定向到https很容易。 我可以使它单向工作https->http,但如果我取消注释这些行,我将被重定向 从到。我错过了什么 Options +FollowSymLinks IndexIgnore */* RewriteEngine on RewriteCond %{HTTPS} on RewriteCond %{R

我需要将除一个请求外的所有请求重定向到https,如果使用https访问,则该请求应重定向到http。此外,我需要标准的php重写,以便所有的土地在index.php。将所有内容重定向到https很容易。 我可以使它单向工作https->http,但如果我取消注释这些行,我将被重定向 从到。我错过了什么

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} ^/bye$
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [L]

#RewriteCond %{HTTPS} off
#RewriteCond %{REQUEST_URI} !^/bye$
#RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

您需要使用
REQUEST
变量,因为
REQUEST\u URI
变量根据最后一条规则更改为
/index.php

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on

RewriteCond %{HTTPS} on
RewriteCond %{THE_REQUEST} \s/+bye/?[?\s]
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

RewriteCond %{HTTPS} off
RewriteCond %{THE_REQUEST} !\s/+bye/?[?\s]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

谢谢,但如果我键入,我将不会被重定向到,这是由于您的浏览器缓存。在新浏览器中测试或清除浏览器缓存。不,在3种不同浏览器上测试,清除缓存。当然我没有注释那条规则……啊,有一个正则表达式问题。现在已修复,请重试。