所以,我正在玩一個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