http通过.htaccess https
我已经看过了现有的问题,但是我还没有真正遇到过任何对我有用的东西。
我目前正在运行一个安全SSL证书的网站。 它可以访问https://www.example.co.uk问题是该网站也可以在http://www.example.co.uk访问 – 我不希望这是可能的。 我需要它从httpredirect到https。
我发现这个代码片段用于.htaccess文件。
Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^example.co.uk [NC] RewriteRule ^(.*)$ https://example.co.uk/$1 [L,R=301]
当用户inputexample.co.uk到他们的地址栏时,这个工作正常,但我也需要添加一些条件语句,以便如果用户input“www.example.co.uk”或“ http:// www.example.co.uk “。
我试过使用[OR]之类的东西,但是这最终导致了服务器的错误。
任何帮助和build议表示赞赏。
干杯。
尝试以下操作:
RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
另外,您还可以根据端口号redirect,例如:
RewriteCond %{SERVER_PORT} ^80$ RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
这会将在端口80上收到的所有请求redirect到HTTPS。
在.htaccess文件中添加以下代码。
RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
更改example.com与您的网站域名
可以从这里findURLredirect教程 – 使用.htaccess文件redirect非www到www和HTTP到HTTPS
试试这个,我用它,它工作正常
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
尝试这个:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
来源: https : //www.ndchost.com/wiki/apache/redirect-http-to-https
(我尝试了很多不同的代码块,这3个class轮完美无缺地工作)
要以简单的方式将http://example.com
或 http://www.example.com
redirect到 https://www.example.com
,您可以在htaccess中使用以下规则:
RewriteEngine on RewriteCond %{HTTPS} off RewriteCond www.%{HTTP_HOST} ^(?:www\.)?(www\..+)$ [NC] RewriteRule ^ https://%1%{REQUEST_URI} [NE,L,R]
[testing]
%{REQUEST_SCHEME}variables是可用的,因为apache 2.4,这个variables包含请求的scheme(http或https)的值,在apache 2.4上你可以使用下面的规则:
RewriteEngine on RewriteCond %{REQUEST_SCHEME} ^http$ RewriteCond %{HTTP_HOST} ^(www\.)?(.+)$ [NC] RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]
有更好和更安全的方法来确保所有的stream量通过https
。 例如,设置两个虚拟主机,并将所有stream量从您的http
redirect到https
主机。 阅读security.stackexchange.com上的这个答案 。
通过设置虚拟主机进行redirect,您可以发送301状态(永久redirect),以便浏览器了解以下所有请求都应该发送到redirect到的https服务器。 因此,在第一个redirect响应之后不会再有http请求。
你也应该仔细检查给出的答案,因为如果设置了错误的重写规则,你可能会丢失传入请求中的查询参数。
如果您想要将HTTPredirect到HTTPS,并且希望为每个URL添加www,请使用下面的htaccess
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L] RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
它会首先将HTTPredirect到HTTPS,然后redirect到www。
我尝试所有上面的代码,但任何代码不工作为我的网站。然后我尝试此代码和此代码运行完美的我的网站。 您可以在htaccess中使用以下规则:
<IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On //Redirect http to https RewriteCond %{SERVER_PORT} 80 RewriteCond %{HTTP_HOST} ^(www\.)?example\.com RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] //Redirect non-www to www RewriteCond %{HTTP_HOST} ^example.com [NC] RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301] </IfModule>
用您的域名更改example.com,并为我可怜的英语感到抱歉。