子域上的https重定向到主域;子域在没有https的情况下工作

时间:2016-08-07 08:12:28

标签: wordpress .htaccess ssl subdomain

我有一个网站https://www.example.com和子域名https://sub.example.com

我的问题是,每当我尝试访问https://sub.example.com时,我都会被重定向到https://www.example.com。但是,当我访问http://sub.example.com时,我没有被重定向。

我有一个通配符SSL证书,可以让我使用https://访问我的子域名。这两个站点都运行WordPress并使用Bluehost托管。我尝试了很多解决方案以及两次联系Bluehost客户支持无济于事。我希望能够通过SSL激活访问我的主域和子域。

我根据以下解决方案编辑了.htaccess文件:htaccess redirect domain to https, subdomain to http and www to non-www

# for main domain
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L,NE]

# for sub domain
RewriteCond %{HTTP_HOST} ^(www\.)?sub\.example\.com$ [NC]
RewriteCond %{HTTPS} on [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ http://sub.example.com%{REQUEST_URI} [R=301,L,NE]

https://my.bluehost.com/hosting/help/766

# Custom subdomain .htaccess SSL + WordPress
RewriteEngine On
RewriteCond %{HTTP_HOST} ^subdomain.maindomain.com$
RewriteCond %{REQUEST_URI} !^/subfolder/
RewriteRule ^(.*)$ /subfolder/$1
RewriteCond %{HTTP_HOST} ^subdomain.maindomain.com$
RewriteRule ^(/)?$ subfolder/index.php [L]
# End custom subdomain .htaccess

# Custom maindomain .htaccess WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?maindomain.com$
RewriteRule ^index\.php$ - [L]
RewriteCond %{HTTP_HOST} ^(www.)?maindomain.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# End custom maindomain .htaccess

http://www.wpbeginner.com/wp-tutorials/how-to-add-ssl-and-https-in-wordpress/

我还尝试了主域和子域的新WordPress安装,没有运气。我不知道还能尝试什么。任何帮助和建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

要尝试的几件事:

  1. 首先,当您进行更改时,请使用Webconfs HTTP Header Checker之类的工具。这样,如果您的Web浏览器具有重定向缓存并且您进行了修改重定向的更改,则Header Checker不会被欺骗。另一方面,即使修复了内容,您的Web浏览器也会继续重定向,直到您清除缓存。或者,您可以尝试Chrome隐身窗口。

  2. 不要只使用一个.htaccess文件,而是为每个站点使用一个.htaccess文件。假设example.com是您的主域,您可以为" root"设置规则。根文件夹中的WP站点,您将为"子域"设置规则。 WP站点位于单独WP安装所在的文件夹中 - /subdomain.com/.htaccess。

  3. 确保你的" root" WP站点URL和主页URL都设置为https版本。你可以在几个地方做到这一点:在" root"的wp-admin中。 WP站点,转到设置>一般。 " WordPress地址(URL)"和"网站地址(URL)"两者都需要https。如果它们设置为http,则会在您单击“保存”时将其注销。或者,您可以在phpMyAdmin中执行此操作 - 在wp_options表中,查找' siteurl'和'家庭'选项,并确保他们重新https而不是http。

  4. 听起来像你的" root"当站点不安全,在http上运行时安装了WP。有时它不仅仅需要更新站点URL和主页URL。尝试使用WP Migrate DB进行搜索和替换,将您的http网址的所有实例转换为https网址。

  5. 完成所有操作后,如果" root"网站仍然重定向到非安全版本,您可以安装WordPress Force HTTPS等插件。