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.comredirect 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量从您的httpredirect到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,并为我可怜的英语感到抱歉。