通过.htaccess 访问 http 到 https

我已经看过现有的问题,但我还没有真正遇到任何适合我的工作。

我目前正在运行一个具有安全 SSL 证书的站点。它可以访问在 https://www.example.co.uk的一个问题是该网站也可以访问在 http://www.example.co.uk-我不希望这是可能的。我需要它从 http 重定向到 https。

我在一个.htaccess 文件中找到了这个代码片段。

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.co.uk [NC]
RewriteRule ^(.*)$ https://example.co.uk/$1 [L,R=301]

当用户输入 example.co.uk 到他们的地址栏时,这个工作很好,但是我还需要添加某种 If判断语句,以便当用户输入“ www.example.co.uk”或者“ http://www.example.co.uk”时。

我尝试过使用类似[ OR ]的方法,但这样做最终会导致服务器错误。

感谢您的帮助和建议。

干杯。

193739 次浏览

试试以下方法:

 RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

此外,还可以根据端口号重定向,例如:

 RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

这将把端口80上接收到的所有请求重定向到 HTTPS。

试试这个,我用过了,效果很好

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

在.htaccess 文件中添加以下代码。

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

用你的网站域名改变 example.com

URL 重定向教程可以从这里找到 -使用.htaccess 文件将非 www 重定向到 www & HTTP 到 HTTPS

要以一种简单的方式重定向 http://example.com 或者 http://www.example.com 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]

[测试]

% { REQUEST _ SCHEME } 变量是可用的,因为 apache 2.4,这个变量包含请求方案的值(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]

试试这个:

RewriteEngine On


RewriteCond %{HTTPS} off


RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

来源: Https://www.ndchost.com/wiki/apache/redirect-http-to-https

(我尝试了很多不同的代码块,这3行代码完美地工作了)

有更好和更安全的方式,以确保您的所有流量超过 https。例如,设置两个虚拟主机,并将所有通信从 http重定向到 https主机。请在 这个答案在这里 security.stackexchange.com 阅读更多相关内容。

通过设置一个用于重定向的虚拟主机,您可以发送一个301状态(永久重定向) ,这样浏览器就能理解所有以下请求都应该发送到被重定向到的 https 服务器。因此,在第一个重定向响应之后将不再发出进一步的 http 请求。

您还应该仔细检查给定的答案,因为如果设置了错误的重写规则,您可能会丢失来自传入请求的查询参数。

如果您希望将 HTTP 重定向到 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]

它首先将 HTTP 重定向到 HTTPS,然后再重定向到 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,并为我糟糕的英语道歉。

对我来说,工作只有这种变体:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

谢谢 https://www.reg.ru/support/hosting-i-servery/sajty-i-domeny/kak-dobavit-redirekt/redirekt-s-http-na-https(俄语)

# Switch rewrite engine off in case this was installed under HostPay.
RewriteEngine Off


SetEnv DEFAULT_PHP_VERSION 7


DirectoryIndex index.cgi index.php


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>


# END WordPress


# RewriteCond %{HTTP_HOST} ^compasscommunity.co.uk\.com$ [NC]
# RewriteRule ^(.*)$ https://www.compasscommunity.co.uk/$1 [L,R=301]

由于这是搜索中的顶级结果之一,因此如果您试图在 AWS bean }上将 http 添加到 https 重定向,则接受的解决方案将不起作用。 您需要改为使用以下代码:

RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^.*$ https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]

试试这个 重写 Cond% { HTTP _ HOST } ! ^ www. [ NC ] RewriteRule ^ (. *) $http://www.%{ HTTP _ HOST }/$1[ R = 301,L ]

返回文章页面完美代码译者:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^YourNameWebsite\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.YourNameWebsite\.com$
RewriteRule ^/?$ "https\:\/\/YourNameWebsite\.com\/index\.html" [R=301,L]

或者

返回文章页面完美代码译者:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^YourNameWebsite\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.YourNameWebsite\.com$
RewriteRule ^/?$ "https\:\/\/YourNameWebsite\.com\/index\.php" [R=301,L]

这些都不适合我,除了这个。我的网站是在 https://www.asmallorange.com托管

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

以下代码,当添加到 .htaccess文件,将自动重定向任何流量的目的地为 http://https:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>

如果项目在 Laravel中,则添加两行

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

最后,您的 .htaccess文件如下所示。

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>


RewriteEngine On


RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]


# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]


# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]


# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>

你可在此浏览更多资料

在.htaccess 文件中添加以下行来限制 http 访问

SSLRequreSSL

出于某种原因,它倒置在我的主人 所以如果我想重定向,我需要检查 https 是否打开,然后重定向到 https

RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]

是我使用的代码