强制非WWW,但强制所有的WordPress和整个域的HTTPS

我有多个wordpress安装和.htaccess重写规则的一些问题,主要是为了强制https,但也去除www。 从任何领域。

域/子域:

  • WordPress 1: examplewebsite.com/home/hostingacc/public_html/
  • WordPress 2: /home/hostingacc/public_html/test//home/hostingacc/public_html/test/
  • WordPress 3: moretests.examplewebsite.com/home/hostingacc/public_html/moretests

.htaccess重写

我试图使用我在互联网上find的一些重写规则,不知道哪一个是最好的使用,但下面是我使用的主要重写规则

 RewriteEngine On RewriteCond %{HTTP_HOST}#%{HTTPS}s ^www\.([^#]+)#(?:off|on(s)) [NC] RewriteRule ^ http%2://%1%{REQUEST_URI} [R=301,L] 

我从https://github.com/h5bp/server-configs-apache/issues/48得到,但如前所述,其中之一可能更适合于强制HTTPS和强制删除WWW

 RewriteEngine On RewriteCond %{SERVER_PORT} 80 [OR] RewriteCond %{HTTP_HOST} ^www.examplewebsite.com RewriteRule ^(.*)$ https://examplewebsite.com/$1 [L,R=301] 

要么

 RewriteEngine On RewriteCond %{HTTPS} !=on [OR] RewriteCond %{HTTP_HOST} !^examplewebsite\.com$ [NC] RewriteRule ^ https://examplewebsite.com%{REQUEST_URI} [R=301,L] 

要么

 RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] RewriteCond %{HTTP_HOST} ^www*\.(.*examplewebsite\.com)$ [NC] RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L] 

要么

 RewriteEngine On RewriteCond %{HTTP_HOST} ^www*\.(.*examplewebsite\.com)$ [NC] RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L] RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

所有上述规则,似乎工作在强制https和主要WordPress的安装删除www,但规则目前不适用于每个wordpress安装的子域名或/wp-admin/子目录,我认为这是因为每个目录中都有一个.htaccess文件。

问题回顾

  • examplewebsite.com(主要网站)正确被迫始终使用https,并且也被迫删除www。 但是…问题位于examplewebsite.com/wp-admin/,它仍然正确强制https(通过规则或通过wp-config.php强制pipe理员ssl,但它并没有强制删除www。原因,我想这是因为我有以下.htaccess文件位于/ wp-admin /文件夹下,所以它看起来像我需要在此文件夹中的htaccess的规则强制删除www和也强制https。

  • test.examplewebsite.com和moretests.examplewebsite.com(子域名)都有一个问题,它不是强制https,它也不是强制删除www。

  • test.examplewebsite.com和moretests.examplewebsite.com(子域名)都有问题,因为第一个/ wp-admin /不会强制删除www。

  • 如果我进入设置或SQL为我的子域,甚至编辑wp-config.php来覆盖SQL,并更改网站的url和家庭url有HTTPS,而不是有www。 (https导致这个问题),那么WordPress的安装变得无法访问,他们消失,并访问链接到子域名redirect/加载主网站

configuration

  • examplewebsite.com – 当前的.htaccess文件

主页: http //pastebin.com/raw/9RNuQZS5
WPpipe理员: http //pastebin.com/raw/8vVnDTRx

  • examplewebsite.com – SQLvariables

网站url(主页): https //www.examplewebsite.com
WordPress的url: https //www.examplewebsite.com

  • examplewebsite.com – WP Config(重写SQL)

configuration:

 define('FORCE_SSL_ADMIN', true); define('FORCE_SSL_LOGIN', true); define('WP_HOME','https://examplewebsite.com'); define('WP_SITEURL','https://examplewebsite.com'); define('DOMAIN_CURRENT_SITE', 'examplewebsite.com' ); define('COOKIE_DOMAIN', 'examplewebsite.com' ); define('ADMIN_COOKIE_PATH', '/wp-admin/'); 
  • test.examplewebsite.com和moretests.examplewebsite.com

子域全部设置如下,但wp-config目前没有应用,因为强制https导致问题4。

.htaccess文件与主域/站点上的文件是99%相同的,唯一的例外是没有自定义代码wp重写循环规则(从wwwredirect到非www,并将httpredirect到https)

  • test.examplewebsite.com和moretests.examplewebsite.com – SQLvariables

网站url(主页): http //test.examplewebsite.com
WordPress的url: http //test.examplewebsite.com

  • test.examplewebsite.com和moretests.examplewebsite.com – WP Config(重写SQL)

configuration:

 define('FORCE_SSL_ADMIN', true); define('FORCE_SSL_LOGIN', true); define('WP_HOME','https://test.examplewebsite.com'); define('WP_SITEURL','https://test.examplewebsite.com'); define('DOMAIN_CURRENT_SITE', 'test.examplewebsite.com' ); define('COOKIE_DOMAIN', 'test.examplewebsite.com' ); define('ADMIN_COOKIE_PATH', '/wp-admin/'); 

设置以上,导致与SQL更改相同的问题(问题4)

步骤检查(我只是说明一个网站):

  1. ping http://www.examplewebsite.com预期的结果:你应该看到你的网站的IP地址
  2. ping examplewebsite.com预期结果:你应该看到你的网站的IP地址
  3. 浏览到https://examplewebsite.com ,以确保您可以浏览网站
  4. 添加以下内容作为您的根.htaccess中的自定义代码WP REWRITE LOOP START的开始:

     # CUSTOM CODE WP REWRITE LOOP START # WP REWRITE LOOP START RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://examplewebsite.com/$1 [R,L] RewriteBase / RewriteRule ^index\.php$ - [L] 

    以上是为了确保将所有非ssl访问重定向到ssl访问,同时将所有非ssl访问重命名为sitewebsite.com,现在如果您输入http:// www ,则应将其重定向到https://examplewebsite.com 。 examplewebsite.com或浏览器中的http://examplewebsite.com

  5. 最后一部分是你的wp-config.php文件包含以下内容:

     define('WP_HOME','https://examplewebsite.com'); define('WP_SITEURL','https://examplewebsite.com'); define('DOMAIN_CURRENT_SITE', 'examplewebsite.com' ); define('COOKIE_DOMAIN', 'examplewebsite.com' ); define('ADMIN_COOKIE_PATH', '/wp-admin/'); 

    这部分是为了确保即使是访问您的www.examplewebsite.com的SSL访问被wordpress重新编写为examplewebsite.com

因为您已将完整站点作为ssl访问权限启用,所以在您的wp-config.php文件中不需要以下内容:

 define('FORCE_SSL_ADMIN', true); define('FORCE_SSL_LOGIN', true);