您好,我的网站托管在Hostinger上,并且我启用了该网站来强制执行HTTPS,因此当人们编写http://example.com时,它会转到https://example.com。 我有一个API,可以处理我程序中的POST。 我已经有我的api处理请求,但是我不知道如何“过滤” HTTPS。 现在,我的API接受了任何请求(http或https),但我希望它忽略或阻止HTTP请求,而仅回答HTTPS。
@edit: 在评论中使用了建议,并附带以下内容: 在RewriteEngine上 RewriteCond%{HTTPS}已关闭 RewriteRule ^(。*)$ https://% {HTTP_HOST}%{REQUEST_URI} [L,R = 301]
当我执行HTTPS请求时,它起作用,但是当我执行HTTP请求时,它发出请求,但是当我回显在主体上发送的变量时,它们为空。
答案 0 :(得分:1)
请在.htaccess
中设置以下重写规则。
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
它为我工作
答案 1 :(得分:1)
.htaccess中的
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirection to HTTPS
RewriteCond %{SERVER_PORT} 80
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
.................
</IfModule>
答案 2 :(得分:0)
这应该拒绝带有403的HTTP请求
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ - [F]
答案 3 :(得分:0)
自从标记了php之后,您还可以使用$_SERVER['HTTPS']:
if(!isset($_SERVER['HTTPS'])) {
header('HTTP/1.0 403 Forbidden');
die 'You are not allowed to use http';
}