所以,我正在玩一个PHP的应用程序,我正在建设。Apache/PHP的URL解析问题
我正在使用mod_rewrite使用.htaccess。这里是什么样子:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php/$1
</IfModule>
我想如果一个URL是这样写的下面:
http://localdomain.com/controller
我所期望的“控制器”没有问题为$ _ SERVER [“PATH_INFO”的部分结束]。然而,在Ubuntu 12.04运行的Apache 2.2.22我收到404 Not Found错误,而不是:
NOT FOUND
The requested URL /index.php/controller was not found on this server.
看来,“控制器”是继index.php的斜线后被妥善解决,但没有人有任何想法为什么我得到404而不是预期的回应?
最终,我试图捕获'控制器'在我正在构建的MVC框架中使用。
在这种情况下,我有一个非常简单的index.php,只有以下几点:
<?php
echo $_SERVER['PATH_INFO'];
然而,我仍然得到而不是预期的路径信息404错误。
注意:只要http://localdomain.com/或http://localdomain.com/index.php工作完美。 mod_rewrite打开并正在工作,并且AllowOverride被设置为All。
这似乎并没有帮助。我仍然得到了相同的404。就好像Apache不允许重写工作一样,但我已经测试过了。 – 2012-07-06 19:57:52
你在'httpd.conf'里面有'AllowOverride All'命令吗?你有'mod_rewrite'安装?这不是'.htaccess'文件的错误,因为我知道我的工作正常。问题出在Apache2或其他地方,而不是文件。 – 2012-07-06 19:58:59
这很奇怪,所以这就是我在这里发布问题的原因。是的,AllowOverride设置为All并且mod_rewrite也被安装。在运行CakePHP或Zend Framework的问题中,我在开发环境中安装了许多其他站点,并且它们都正常工作。我知道我必须失去一些东西。 – 2012-07-06 20:03:38