Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过.htaccess从http到https_Http_.htaccess_Redirect_Https - Fatal编程技术网

通过.htaccess从http到https

通过.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.

我已经查看了现有的问题,但我还没有真正发现任何适合我的问题

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

我在.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.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版本,当我添加建议代码时,我收到的消息是您重定向了太多次?任何帮助都将不胜感激。这看起来不是正确的答案。那么,请解释一下你为什么这么做