我需要将所有对站点的请求重定向到 www,只有某些页面重定向到 https 而没有 www,因为出于某种原因,我们的客户购买的 ssl 证书不包括 www。环顾四周后,我设法完成了大部分工作。但是,一旦我们访问了一个安全的 url 页面,其他页面将停留在 https 上。这是我到目前为止在.htaccess中的内容:
#Redirect to www
RewriteCond %{HTTPS} =off
RewriteCond %{HTTP_HOST} ^[^./]+\.[^./]+$ [NC,OR]
RewriteCond %{HTTP_HOST} ^([^./]+)\.[^./]+\.[^./]+$ [NC]
RewriteCond %1 !=www [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# Force SSL on checkout login account and admin pages
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} checkout|login|my-account|administrator|webshop
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L
如果 https 已打开且不属于列出的 url,我会错过将重定向到 www 不安全的部分。但我对正则表达式和重写规则一点也不熟悉。一些帮助将不胜感激。