Apache htaccess重写规则-域/子域https/www
我有我的主域和一个子域。子域位于主域根目录的子目录中,无法更改。主域有SSL,而子域没有 现在,我试图强制主域使用Apache htaccess重写规则-域/子域https/www,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我有我的主域和一个子域。子域位于主域根目录的子目录中,无法更改。主域有SSL,而子域没有 现在,我试图强制主域使用https和www,强制子域使用nohttps和nowww。因此,在最后,不管主域将如何被访问,它都应该重定向到https://www.example.com和同一时间子域应为http://sub.example.com 访问它们的所有其他可能组合应重定向到上述2。到目前为止,我成功地做到了这一点,但在我使用https://sub.example.com。它不会重定向到http版本,
https
和www
,强制子域使用nohttps
和nowww
。因此,在最后,不管主域将如何被访问,它都应该重定向到https://www.example.com
和同一时间子域应为http://sub.example.com
访问它们的所有其他可能组合应重定向到上述2。到目前为止,我成功地做到了这一点,但在我使用https://sub.example.com
。它不会重定向到http版本,而是尝试通过https加载页面,浏览器会抛出有关SSL的安全警告,如果我继续,它会通过子域加载主域站点的内容,并在浏览器上显示不安全警告
下面是我正在根目录上的htaccess上尝试的htaccess规则,它同时影响主站点和子域
如何改进它们并实现预期结果
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} sub\.example\.com [NC]
RewriteRule ^(.*)$ http://sub.example.com/$1 [R=301,L]
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} sub\. [NC]
RewriteRule ^(.*)$ http://sub.example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteCond %{HTTP_HOST} !sub\. [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} www\.sub\. [NC]
RewriteRule ^(.*)$ http://sub.example.com/$1 [R=301,L]
要仅将主域重定向到https,可以使用以下规则:
RewriteEngine on
#https to http (subdomain)
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^sub.example.com$
RewriteRule ^ http://sub.example.com%{REQUEST_URI} [NE,L,R]
#main domain
RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(example\.com)$
RewriteRule ^ https://www.%1%{REQUEST_URI} [NE,L,R]