在单个网站上切换http和https页面

时间:2015-02-11 13:31:49

标签: apache .htaccess

我们正在运行一个包含HTTP和HTTP协议的网站。我们需要.htaccess文件的规则,我们可以处理这些请求,即非https页面应该使用http://重定向,而https页面应该使用https://协议重定向。 我们正在使用apache。任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:2)

将此添加到站点根目录下的.htaccess文件中。

RewriteEngine on

# Force http://
RewriteCond %{HTTPS} =on
RewriteCond %{REQUEST_URI} ^(/|/dl/memorandum.*)$ [NC]
RewriteRule ^ http://%{HTTP_HOST}/ [R=301,L]

# Force SSL
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} ^/contact$ [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

您可以使用| OR运算符在多个页面上进行匹配。

^/(contact|profile|transactions)$ [NC]

如果网址很长,您可以删除$并将前缀匹配为

^/(contact|profile|transactions) [NC]

现在也会在/contact-page/contact/page上匹配。


使用否定在所有不需要SSL的规则上强制使用HTTP。

RewriteEngine on

# Force http://
RewriteCond %{HTTPS} =on
RewriteCond %{REQUEST_URI} !^/(contact|login|cart|register|forgot-your-password|request)$ [NC]
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Force SSL
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} ^/(contact|login|cart|register|forgot-your-password|request)$ [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]