我的WordPress网站存在问题,无法连接到非www域上的数据库。我正在尝试使用以下规则将所有非www请求重写为www,但它没有效果:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
在我的服务器上,我目前有两个.htaccess
个文件 - 一个在根目录中,它将裸域重定向到包含我的网站的子目录(见下文),另一个在此子目录中,它会重写一些默认的WordPress网址。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/sub-directory/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /sub-directory/$1
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(/)?$ sub-directory/index.php [L]
</IfModule>
对于DNS,我有一条A记录,指向@
到我服务器的IP地址,以及一个指向www
到@
的CNAME。
我的wp-config.php
文件包含以下读取数据库凭据的条件:
if($_SERVER['SERVER_NAME'] !== 'www.domain.com') {
include(dirname(__FILE__) . '/wp-config-local.php');
define('WP_LOCAL', true);
}else {
// Production credentials
}
我了解domain.com无法连接到我的数据库,因为$_SERVER['SERVER_NAME']
变为domain.com
而不是www.domain.com
,但我没有在凭据条件中添加两者,而是认为{ {1}}重写可以解决这个问题。我正在努力确定问题的确切位置。提前致谢
答案 0 :(得分:0)
问题是在子目录重定向之后执行了非www规则。一旦摆好,一切都按预期工作。