cPanel/Apache 强制开启https访问

只需要将以下代码放到网站根目录以 .htaccess 文件名命名,如果 .htaccess 文件中已经有内容,请将重定向代码放在最前面。

RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

或者:

RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L]

亦或是:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

高级进阶
以上规则会影响子域名,如果希望只有主域名使用https,而子域名不使用,使用以下规则:

RewriteEngine On
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP_HOST} !^feaink.cn
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

注意上面的规则中的feaink.cn换成你的域名。

如果只想排除某个子域名,也就是只有某个子域名不使用https,可以使用以下规则:

RewriteEngine On
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} !^http://zip5.cn
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

IIS7 :从微软的官方网站下载HTTP重写模块,安装完毕之后重启IIS服务,之后打开IIS控制台,发现多了一个组件,双击“URL重写”,在右边窗体中选择“添加规则”,并添加一个空白规则,给规则自定义一个名字(名称自便),比如我这里叫“redirect to HTTPS”,模式为:(.*),添加一个条件,条件输入为 {HTTPS},与模式匹配,模式为 ^OFF$,然后配置操作,操作类型为:重定向,重定向到URL为:https://{HTTP_HOST}/{R:1},重定向类型:永久301。

设置完毕后点击右侧的“应用”,这个 URL 重写就配置完毕了。配置后根目录下的web.config文件的内容如下:

<?xml version=”1.0″ encoding=”UTF-8″?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name=”redirect to HTTPS” enabled=”true” stopProcessing=”true”>
                    <match url=”(.*)” />
                    <conditions>
                        <add input=”{HTTPS}” pattern=”^OFF$” />
                    </conditions>
                    <action type=”Redirect” url=”https://{HTTP_HOST}/{R:1}” />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

若需要同时支持 强制 访问WWW域名请参照:强制使用WWW域名访问站点https://www.feaink.com/747/

补充:

RewriteEngine on #开启重定向引擎

RewriteBase / #可以不设置

RewriteCond %{SERVER_PORT} !^443$ #非443端口的数据全部进行重定向

RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R] #把需要重定向的内容重定向到https

.htaccess文件不能在win平台下需要自己创建:

RewriteEngine on #开启重定向引擎

RewriteBase / #可以不设置

RewriteCond %{SERVER_PORT} !^443(或者其他端口)$ #非443端口的数据全部进行重定向

RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R] #把需要重定向的内容重定向到https

如果是默认不是443端口,那么可以在最后一行写成这样

RewriteRule ^.*$ https://www.domain.com:8443

当然如果默认是443的话,也可以这么写

RewriteRule ^.*$ https://www.domain.com

该 .htaccess 需要放置在网站的根目录下面才可以生效

含义是这样的:为了让用户访问传统的http://转到https://上来,用了一下rewrite规则:
第一句:启动rewrite引擎
第二句:rewrite的条件是访问的服务器端口不是443端口
第三句:这是正则表达式,^是开头,$是结束,/?表示有没有/都可以(0或1个),(.*)是任何数量的任意字符
整句的意思是讲:启动rewrite模块,将所有访问非443端口的请求,url地址内容不变,将http://变成https://。


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注