2015-12-21 136 views
5

我有多个wordpress安装和.htaccess重写规则的一些问题,主要用于强制https,但也去除www。来自任何域。强制非WWW,但强制https跨越所有wordpress和整个域名

域/子域:

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

htaccess的重新写入

我试图用我已经在互联网上发现了几个重写规则,一个是不知道该怎么用最好的之一,但下面是我用

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但如前所述,这些中的一个可能更适合为FORCING 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但是规则目前不适用于子域或/wp-admin/每个wordpress安装的子目录,我认为这是因为每个目录中都有一个.htaccess文件。

问题重温

  • examplewebsite.com(主站)正确被迫始终使用https,也被迫删除WWW。但是...问题位于examplewebsite.com/wp-admin/,它仍然正确强制https(通过规则或通过wp-config.php强制管理员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和home url更改为使用https并且不使用www。(https的会导致此问题),那么WordPress的安装变得inacessable,他们消失和来访的链接子域重定向的主要网站,而不是

配置

  • examplewebsite.com /负载 - 电流。 htaccess的文件

主页:http://pastebin.com/raw/9RNuQZS5
WP管理:http://pastebin.com/raw/8vVnDTRx

  • examplewebsite.com - SQL变量

站点URL(主页):https://www.examplewebsite.com
WordPress的网址:https://www.examplewebsite.com

  • examplewebsite.com - WP配置(覆盖SQL)

配置:

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-配置目前因为强制https导致问题4.

.htaccess文件与99%相同到主域/网站与那个唯一的例外在那些没有自定义代码重写WP循环规则(从WWW重定向到非www和HTTP重定向到https)

  • test.examplewebsite。 COM和moretests.examplewebsite.com - SQL变量

站点URL(主页):http://test.examplewebsite.com
WordPress的网址:http://test.examplewebsite.com

  • test.examplewebsite.com和moretests.examplewebsite。COM - WP配置(重写SQL)

配置:

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期)

+0

应该在哪里子域名重定向到如果没有HTTPS?主要域名或与https的子域名? –

+0

子域名应​​该是https而不是http。 – Ryflex

+0

你说wp-admin没有做https?你的.htaccess中会有其他规则可以做到这一点吗? –

回答

0

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

  1. ping www.examplewebsite.com预期结果:您应该看到ip您的网站的地址
  2. 平examplewebsite.com预期的结果:你应该看到你的网站的IP地址
  3. 浏览https://examplewebsite.com,以确保您可以broswe的 网站
  4. 添加遵循开始您的自定义代码WP REWRITE LOOP 开始在根目录的.htaccess:

    # 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访问现场examplewebsite.com,现在 你应该被重定向到https://examplewebsite.com,如果你在浏览器

  5. 最后一部分是有你的wp-config.php文件以包括 键入 http://www.examplewebsite.comhttp://examplewebsite.com如下:

    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/'); 
    

    这部分是为了确保即使在SSL访问 www.examplewebsite.com得到由 WordPress的

  6. rewrited到examplewebsite.com

因为你,因为只有SSL访问启用完整的网站,所以下面是没有必要在你的wp-config.php文件:

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

关于1&2,他们显示我的服务器IP。关于3,是我的正常网站加载...关于4,我已经给出了几个工作的例子,强制ssl和删除www,他们都工作,但它不能解决问题。重新5,我已经包括在我原来的帖子中提到的。至于你最后的小点,无论有没有它都没有区别。 – Ryflex

+0

@Ryflex号码3是最重要的问题,您需要通过https访问该站点,否则它意味着它没有ssl访问权限! – Allen

+0

是的,我说这个网站正常加载。我的SSL证书是好的,他们工作。 – Ryflex