当前位置:  开发笔记 > 运维 > 正文

强制非WWW,但强制https跨所有wordpress和整个域

如何解决《强制非WWW,但强制https跨所有wordpress和整个域》经验,为你挑选了0个好方法。

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

域/子域:

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获得,但如前所述,其中一个可能更适合强制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.原因,我想是因为我在/ wp-admin /文件夹下面有以下.htaccess文件所以看起来我需要这个文件夹中的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安装变得无法使用,他们消失并访问子域的链接重定向/加载主网站而不是

配置

examplewebsite.com - 当前的.htaccess文件

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

examplewebsite.com - SQL变量

网站网址(主页): https ://www.examplewebsite.com
Wordpress网址: https ://www.examplewebsite.com

examplewebsite.com - WP Config(覆盖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

子域都设置如下,但是由于强制https导致问题4,因此目前不应用wp-config .

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

test.examplewebsite.com和moretests.examplewebsite.com - SQL变量

网站网址(主页): http ://test.examplewebsite.com
Wordpress网址: http ://test.examplewebsite.com

test.examplewebsite.com和moretests.examplewebsite.com - WP Config(覆盖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)

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有