Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 当没有请求URI时,从HTTPS还原为HTTP_.htaccess_Mod Rewrite_Https - Fatal编程技术网

.htaccess 当没有请求URI时,从HTTPS还原为HTTP

.htaccess 当没有请求URI时,从HTTPS还原为HTTP,.htaccess,mod-rewrite,https,.htaccess,Mod Rewrite,Https,我有一组重写规则,如下所示,根据路径处理HTTP和HTTPS上的请求路由: #强制对某些URL使用SSL 重写条件%{HTTPS}关闭 重写COND$1^(管理员|结帐|客户区)[NC] 重写规则(.*)https://%{HTTP_HOST}%{REQUEST_URI}[L,R=301] #强制其他URL使用非SSL 在上重写cond%{HTTPS} 重写cond%{REQUEST_METHOD}=邮递 重写cond%{REQUEST_FILENAME}-F 重写cond%{REQUEST_F

我有一组重写规则,如下所示,根据路径处理HTTP和HTTPS上的请求路由:

#强制对某些URL使用SSL
重写条件%{HTTPS}关闭
重写COND$1^(管理员|结帐|客户区)[NC]
重写规则(.*)https://%{HTTP_HOST}%{REQUEST_URI}[L,R=301]
#强制其他URL使用非SSL
在上重写cond%{HTTPS}
重写cond%{REQUEST_METHOD}=邮递
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
#此处没有URI的请求的占位符
1美元^(管理|结帐|客户区)[NC]
重写规则(.*)http://%{http_HOST}%{REQUEST_URI}[L,R=301]
但是我注意到,如果用户导航到
/checkout
,然后返回主页(那里没有
请求URI
),HTTPS协议仍然存在。我尝试添加以下内容:

RewriteCond%{REQUEST\u URI}^$

但是没有用。我在这里做错了什么?

好吧,我在这里偶然发现了一篇文章,它让我朝着正确的方向前进。我需要在上述条件之后添加另一个条件块,如下所示:

# Force Non-SSL for the home page (only)
RewriteCond %{HTTPS} on
RewriteCond %{QUERY_STRING} !^ACT= [NC]
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond $1 ^$ [NC]
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

似乎就是这样!:)

根据我的经验,请求URI总是存在的。由于它包含了前导斜杠,我认为它无法与
匹配^$
.Hmm,必须有某种方法来匹配以下条件:域后面没有任何内容,或者只是一个尾随斜杠/应该是
^/$,没有?URI总是有一个前导斜杠。不-我也试过。。。不要抽雪茄(清除浏览器的缓存。