我有多个wordpress安装和.htaccess
重写规则的一些问题,主要是为了强制https,但也去除www。 从任何领域。
examplewebsite.com
( /home/hostingacc/public_html/
) /home/hostingacc/public_html/test/
( /home/hostingacc/public_html/test/
) moretests.examplewebsite.com
( /home/hostingacc/public_html/moretests
) 我试图使用我在互联网上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/加载主网站
主页: http : //pastebin.com/raw/9RNuQZS5
WPpipe理员: http : //pastebin.com/raw/8vVnDTRx
网站url(主页): https : //www.examplewebsite.com
WordPress的url: https : //www.examplewebsite.com
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/');
子域全部设置如下,但wp-config目前没有应用,因为强制https导致问题4。
.htaccess文件与主域/站点上的文件是99%相同的,唯一的例外是没有自定义代码wp重写循环规则(从wwwredirect到非www,并将httpredirect到https)
网站url(主页): http : //test.examplewebsite.com
WordPress的url: http : //test.examplewebsite.com
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)
步骤检查(我只是说明一个网站):
添加以下内容作为您的根.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
最后一部分是你的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);