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 总结