PHP Codeigniter - Apache 虚拟主机设置问题

Posted

技术标签:

【中文标题】PHP Codeigniter - Apache 虚拟主机设置问题【英文标题】:PHP Codeigniter - Apache virtual host setup trouble 【发布时间】:2011-05-05 12:29:16 【问题描述】:

这一直让我很头疼。希望你们能提供帮助。我找不到错误所在。

httpd-vhosts.conf

NameVirtualHost 127.0.0.1

<VirtualHost 127.0.0.1>
    DocumentRoot /opt/lampp/htdocs
    ServerName localhost
</VirtualHost>

<VirtualHost 127.0.0.1>
    DocumentRoot /home/tilman/Sites/mysite/www
    ServerName mysite.lo
</VirtualHost>

/etc/hosts

127.0.0.1   localhost
127.0.0.1   mysite.lo

config.php

$config['base_url'] = "http://mysite.lo";
$config['index_page'] = "";

www/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %REQUEST_FILENAME !-f
    RewriteCond %REQUEST_FILENAME !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
    ErrorDocument 404 index.php
</IfModule>

现在http://mysite.lo 向我展示了默认控制器。 http://mysite.lo/index.php 也是。 http://mysite.lo/index.php/welcome 也是如此。

http://mysite.lo/welcome 没有。

http://localhost/mysite/www/welcome 按预期工作。


编辑: 我想将系统和应用程序移出 Web 根目录。 所以我的文件结构是这样的:

application/
system/
www/
 '- index.php

当然,在 index.php 中,我更改了系统和应用程序文件夹的路径。

【问题讨论】:

【参考方案1】:

听起来您遇到的是 rewritemod/htaccess 问题,而不是 VirtualHost 问题。你确定你有一个块,比如

<VirtualHost *:80>
  ServerName mysite.lo
  <Directory /home/tilman/Sites/mysite>
    AllowOverride All
  </Directory>
</VirtualHost>

在您的配置文件中的某个位置? /index.php 和 /index.php/welcome 工作的事实,告诉我它是重写模块不起作用......

【讨论】:

伙计,太傻了,我只是忘了添加那个指令。好眼力。谢谢。 没问题。很高兴我能帮上忙。 我在这里遇到了一个与加载 index.php 上的 CakePHP 站点的静态资产(css、js ...)相关的问题,以及一个完美加载 index.php 的 CodeIgniter 站点但随后所有的内部路由都给出了 404 错误。我为目录配置添加了“AllowOverride All”,这解决了这两个问题。【参考方案2】:

在你的虚拟主机中,你不需要这个吗?

<VirtualHost 127.0.0.1>
    DocumentRoot /home/tilman/Sites/mysite
    ServerName mysite.lo
</VirtualHost>

我不确定您是否需要 www 部分。

【讨论】:

我编辑了我的问题,很抱歉一开始没有提及。

以上是关于PHP Codeigniter - Apache 虚拟主机设置问题的主要内容,如果未能解决你的问题,请参考以下文章

CodeIgniter 删除 index.php apache mod_rewrite

从 localhost 和 apache 服务器上的 codeigniter 项目中删除 index.php

apache_conf 从codeigniter中删除index.php

CodeIgniter 框架在Apache服务器下去掉index.php 总结

codeigniter 去除index.php (nginx,apache) 通用方法

PHP Codeigniter - Apache 虚拟主机设置问题