我在安装多个 wordpress 和 .htaccess
时遇到了一些问题重写规则,主要用于强制https但也删除www。来自任何域。
域/子域:
examplewebsite.com
( /home/hostingacc/public_html/
) test.examplewebsite.com
( /home/hostingacc/public_html/test/
) 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]
上述所有规则似乎都适用于在主 wordpress 安装上强制 https 和删除 www,但这些规则目前不适用于子域或
/wp-admin/
每个 wordpress 安装的子目录,我认为这是因为有一个 .htaccess
每个目录中的文件。问题回顾
配置
首页: http://pastebin.com/raw/9RNuQZS5
WP 管理员: http://pastebin.com/raw/8vVnDTRx
网站网址(首页): https://www.examplewebsite.com
WordPress 网址: https://www.examplewebsite.com
配置:
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% 相同,唯一的异常(exception)是没有 自定义代码 wp 重写循环 规则(从 www 重定向到非 www 并将 http 重定向到 https)
网站网址(首页): http://test.examplewebsite.com
WordPress 网址: http://test.examplewebsite.com
配置:
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 中启动:
# 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如果你输入
http://www.examplewebsite.com或 http://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 被重写为 examplewebsite.com
wordpress
因为您仅将完整站点启用为 ssl 访问,所以您的 wp-config.php 文件中不需要以下内容:
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
关于wordpress - 强制非 WWW 但强制 https 跨所有 wordpress 和整个域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34404609/