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