WordPress网站未连接到非www

时间:2017-09-27 16:49:49

标签: php wordpress apache

我的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}}重写可以解决这个问题。我正在努力确定问题的确切位置。提前致谢

1 个答案:

答案 0 :(得分:0)

问题是在子目录重定向之后执行了非www规则。一旦摆好,一切都按预期工作。