如何使用htaccess强制使用http- NOT https

问题描述:

我有一个目录用于整个域,我想要强制https,即“/ docs”。在/ docs文件夹,我有以下htaccess文件:如何使用htaccess强制使用http- NOT https

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

这就迫使HTTPS在/ docs目录,这就是我想要它做的一切。我遇到的问题是试图强制删除https回到http我的网站的所有其他地区。在该网站的根文件夹(这是运行WordPress的),我有以下htaccess文件:

# 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 %{HTTPS} on 
RewriteCond %{REQUEST_URI} !^/docs/?.*$ 
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L] 

不幸的是,这是行不通的。我仍然可以通过https访问我网站的其他区域。

我需要改变以使其正常工作?

为什么你需要恢复到http?如果您拥有正确的SSL证书,则不妨保证您的访问安全。除非您担心系统上的负载。

+1

系统负载,一些图像和JavaScript将被混合HTTP/HTTPS等 – JROB 2012-04-27 18:40:53

+0

使用相对URI,以避免与混合的安全级别(问题'// example.com /富/ bar.jpeg'如果你需要改变主机)。 – Quentin 2012-04-27 18:45:41

尝试用于wordpress的Force非SSL插件。

+0

如果SSL的目录位于WordPress目录之外,这样做会起作用吗? – 2012-09-20 06:49:15

由于接受的答案实际上并没有回答这个问题,我想我会把我的解决方案发布到这里。添加到您的.htaccess文件强制HTTP而不是HTTPS的:

# BEGIN Force HTTP 
RewriteEngine On 
RewriteCond %{SERVER_PORT} 443 
RewriteRule ^(.*)$ http://yourdomain.com/$1 [R=301,L] 
# END Force HTTP 
+1

感谢rog回答所问的问题。 ;) – 2017-01-13 15:52:17

+1

如果HTTPS版本没有有效的证书,则这不起作用。 (因为浏览器的证书警报总是在Apache重写之前出现。) – 2017-02-20 08:36:18

+0

@TamásBolvári有效的问题,但是问题提到他们已经获得了有效的证书。 – rog 2017-03-06 04:06:18

的“WordPress的力量HTTP”插件只是为我工作的事情。它将https更改为http,不仅仅是作为大多数答案的头版,还会将网站中所有子目录的https更改为http。

https://en-au.wordpress.org/plugins/wp-force-http/