通过.htaccess从http到https
我已经查看了现有的问题,但我还没有真正发现任何适合我的问题 我目前正在运行一个具有安全SSL证书的站点。它可以在一个问题是,该网站也可以在访问-我不希望这是可能的。我需要它从http重定向到https 我在.htaccess文件中找到了这段代码通过.htaccess从http到https,http,.htaccess,redirect,https,Http,.htaccess,Redirect,Https,我已经查看了现有的问题,但我还没有真正发现任何适合我的问题 我目前正在运行一个具有安全SSL证书的站点。它可以在一个问题是,该网站也可以在访问-我不希望这是可能的。我需要它从http重定向到https 我在.htaccess文件中找到了这段代码 Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^example.co.uk [NC] RewriteRule ^(.*)$ https://example.co.
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.co.uk [NC]
RewriteRule ^(.*)$ https://example.co.uk/$1 [L,R=301]
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
当用户在他们的地址栏中输入example.co.uk时,这很好,但我还需要添加某种条件语句,以便在用户输入“www.example.co.uk”或“”时
我尝试过使用[OR]之类的工具,但最终会导致服务器错误
欢迎提供任何帮助和建议
干杯。尝试以下方法:
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文件中添加以下代码
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.co.uk [NC]
RewriteRule ^(.*)$ https://example.co.uk/$1 [L,R=301]
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
使用您的网站域更改example.com
URL重定向教程可以在这里找到-重定向
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]
<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>
[测试]
%{REQUEST_SCHEME}变量自apache 2.4以来可用,此变量包含请求的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]
试试这个:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
资料来源:
(我尝试了这么多不同的代码块,这个3行程序工作得非常完美)有更好、更安全的方法来确保您的所有流量都通过
https
。例如,设置两个虚拟主机并将所有流量从http
重定向到https
主机。请在中阅读更多关于此的信息
通过设置用于重定向的虚拟主机,您可以发送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中使用以下规则:
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond www.%{HTTP_HOST} ^(?:www\.)?(www\..+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [NE,L,R]
<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>
选项+FollowSymLinks
重新启动发动机
//将http重定向到https
重写cond%{SERVER_PORT}80
重写cond%{HTTP_HOST}^(www\)?示例\.com
重写规则^(.*)$https://www.example.com/$1[R,L]
//将非www重定向到www
RewriteCond%{HTTP_HOST}^example.com[NC]
重写规则^(.*)$https://www.example.com/$1[L,R=301]
将example.com更改为您的域名,并为我糟糕的英语表示歉意。对于我,仅此版本:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
谢谢(俄语)#关闭重写引擎,以防它安装在HostPay下。
发动机熄火
SetEnv DEFAULT_PHP_版本7
DirectoryIndex.cgi index.php
#开始WordPress
重新启动发动机
重写基/
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
#结束WordPress
#RewriteCond%{HTTP_HOST}^compasscommunity.co.uk\.com$[NC]
#重写规则^(.*)$https://www.compasscommunity.co.uk/$1[L,R=301]
由于这是搜索中最重要的结果之一,如果您试图在AWS beanstalk上添加http到https重定向,则接受的解决方案将无法工作。
您需要以下代码:
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^.*$ https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
试试这个
RewriteCond%{HTTP\u HOST}^www.[NC]
重写规则^(.*)${HTTP_HOST}/$1[R=301,L]
进入HTML索引的完美代码:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^YourNameWebsite\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.YourNameWebsite\.com$
RewriteRule ^/?$ "https\:\/\/YourNameWebsite\.com\/index\.html" [R=301,L]
或
进入PHP索引的完美代码:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^YourNameWebsite\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.YourNameWebsite\.com$
RewriteRule ^/?$ "https\:\/\/YourNameWebsite\.com\/index\.php" [R=301,L]
除了这个,这些对我都不起作用。我的网站是在
将以下代码添加到
.htaccess
文件时,将自动将所有发送到http:的流量重定向到https:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>
就在<代码>的下方,重新编写引擎打开。最后,您的.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>
选项-多视图-索引
重新启动发动机
重写条件%{HTTPS}关闭
重写规则(.*)https://%{HTTP_HOST}%{REQUEST_URI}[R,L]
#句柄授权头
RewriteCond%{HTTP:Authorization}。
重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]
#如果不是文件夹,则重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_URI}(+)/$
重写规则^1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
在.htaccess文件中添加以下行以限制http访问
SSLRequireSSL非常感谢@BlueRockAddict-很棒的东西。真是太棒了!谢谢将(使用.htaccess文件)从http://迁移到https://(一旦您获得SSL证书)的最简单方法是,您是填写服务器名称还是保持写的状态?@AlxVallejo服务器名称保持写的状态,这是一个Mod_重写变量:为什么一个使用
[R,L]
而另一个使用[R=301,L]
?可能重复的,接受的答案对我不起作用,但这一个很好用。:)我是404上的重复请求_URI,所以url中的www不会转到https版本,当我添加建议代码时,我收到的消息是您重定向了太多次?任何帮助都将不胜感激。这看起来不是正确的答案。那么,请解释一下你为什么这么做