首页 > 解决方案 > CodeIgniter:没有 www 的服务器名称不会选择正确的数据库配置

问题描述

如果我转到http://www.example.com的 url,我会很好地重定向到http://www.example.com/site/index.php/home/main,就像我想要使用 .htaccess 文件一样。

如果我切断 WWW 部分,即http://example.com ,那么我会收到以下错误:

An Error Was Encountered
No database connection settings were found in the database config file.

我的 htaccess 文件:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /example/index.php?/$1 [L]  

RedirectMatch 301 ^/$ /home/main/

在 database.php 中我有

 if (
    ($_SERVER['SERVER_NAME'] == 'www.example.com') 
    or ($_SERVER['SERVER_NAME'] == 'example.com') 
    or ($_SERVER['SERVER_NAME'] == 'example.anothersite.com')
    or ($_SERVER['SERVER_NAME'] == "NN.NN.NN.NN")
)
{
    $db['default']['hostname'] = 'localhost';
    $db['default']['username'] = .....

我错过了什么?我需要它在有或没有 WWW 的情况下工作,这似乎是我的 CodeIgniter 中的一个问题,因为错误是 CodeIgniter 错误。

谢谢!

标签: database.htaccesscodeigniterconfigno-www

解决方案


休息后大脑的工作方式令人惊讶。老实说,为了解决这个问题,我需要休息一下。

我的链接指向 VirtualServer,问题是 www.example.com 指向正确的服务器,而我没有“example.com”的 VirtualServer 文件,它只是获取第一个文件(显然是错误的)并且它位于错误的 CodeIgniter 文件夹和错误的数据库文件中。

所以要解决这个问题,我只需要编辑 apache 指令并在“ServerName www.example.com”部分之后添加另一个没有 www 的部分,如下所示:

ServerName example.com
ServerAlias example.com
DocumentRoot "/home/example/public_html"
<Directory "/home/example/public_html">
    AllowOverride All
    allow from all
    Options Indexes FollowSymLinks MultiViews Includes ExecCGI
    Require all granted
</Directory>

这解决了我的问题


推荐阅读