在.htaccess中强制HTTP

时间:2017-01-26 12:26:06

标签: .htaccess http https

我正在尝试强制我的网站从https重定向到http,大部分教程都是相反的(强制http到https),我遇到的少数几个到目前为止还没有为我工作。

这就是我的.htaccess文件现在的样子

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

    # 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

3 个答案:

答案 0 :(得分:1)

使用此方法强制使用HTTP:

RewriteEngine On

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

确保在测试之前清除缓存。

答案 1 :(得分:1)

使用此方法强制转到http:

RewriteEngine on
RewriteCond %{HTTPS} on 
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]

答案 2 :(得分:1)

你做的恰恰相反,即它来自HTTP

RewriteCond %{SERVER_PORT} 80

重定向到HTTPS

RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

删除这两行并替换为以下内容。

首先,你不应该检查端口,而是检查更可靠的%{HTTPS},例如。

RewriteCond %{HTTPS} on

下一次重定向到HTTP(请注意缺少的s

RewriteRule ^(.*)$ http://www.example.com/$1 [R,L]

如果一切正常,您可以将R替换为R=301从不使用R=301进行测试。