database - 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 错误。
谢谢!
解决方案
休息后大脑的工作方式令人惊讶。老实说,为了解决这个问题,我需要休息一下。
我的链接指向 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>
这解决了我的问题
推荐阅读
- python - 如何将字典值插入到 sql 表中?
- testing - 在 WebStorm 中为 CucumberJS 和基于 TestCafe 的项目调试配置
- c# - 如何拆分字符串并分配为表中的列和行
- spring - Thymeleaf 模型属性是否不允许以“is”开头?
- android - 发送短信时一加设备问题
- c - 尝试在原始 IP 数据包上发送数据时的 EMSGSIZE
- prolog - Prolog 中的 map 函数等价于什么?
- spring - 如何在多线程环境中使用@Transactional
- matlab - 如何将 ABM 模型从 MATLAB 转换为 NetLogo?
- angular - 如何在 ionic 4 中添加/导入/安装 Gesture?