我不知道這是一個Apache或PHP的事情,但如果你去到任何一個:如何停止解析爲文件時不存在的URL?
mysite.com/about
mysite.com/about/
它會顯示mysite.com/about.php
文件,而不是一個404錯誤,因爲該目錄不存在。
我相信這是一些設置,也許是一個htaccess的東西,任何想法?
我不知道這是一個Apache或PHP的事情,但如果你去到任何一個:如何停止解析爲文件時不存在的URL?
mysite.com/about
mysite.com/about/
它會顯示mysite.com/about.php
文件,而不是一個404錯誤,因爲該目錄不存在。
我相信這是一些設置,也許是一個htaccess的東西,任何想法?
正如其他人已經回答,它可能是一個mod_rewrite規則;還有一個叫做MultiViews
的指令明確地用於啓用你描述的功能。
http://httpd.apache.org/docs/2.2/content-negotiation.html#multiviews
多視圖的作用是作爲 如下:如果服務器接收用於/一些/目錄/ foo的一個 請求時,如果 /一些/目錄,使多視圖,和 /一些/ DIR /富不存在,那麼 服務器讀取尋找名爲foo 文件的目錄。*,有效 假貨一個類型的地圖,名稱的所有 這些文件,賦予它們同樣 媒體類型和內容編碼它如果客戶要求其中一個名稱爲 ,則會有個客戶。然後它選擇 與客戶的 要求的最佳匹配。
查找
Options MultiViews
在httpd.conf或特定的虛擬主機,配置文件
。
這不是默認行爲,所以很難說。如果這發生在Apache端,請查找一系列重寫匹配指令;他們可能會以RewriteCond
開頭並以RewriteRule
結尾。
如果您在VirtualHost
配置文件或.htaccess
配置文件中沒有看到類似的內容,那麼它將由您正在使用的任何PHP框架進行管理,而您需要在其中配置相應內容。
+1這絕對不是一個默認的PHP/Apache的安裝。我懷疑一個'mod_rewrite'指令或一個模塊,可以建議替代文件名稱爲不完整的請求,我忘了它的名字... – 2010-02-02 14:06:47
這個的.htaccess可以解析,用$ _ SERVER [REQUEST_URI]在PHP端,完整的URL,然後執行所需的操作,這是一個普遍的方式,你應該考慮誤差控制和404重定向:
ErrorDocument 404 /404.php
<IfModule mod_rewrite.c>
RewriteEngine On
# RewriteBase
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
和int PHP的一面,這應該是本的index.php
$URLarray = explode('/', $_SERVER['REQUEST_URI']);
與問題無關 – meagar 2010-02-02 14:26:51
非常感謝這正是我一直在尋找! – fire 2010-02-02 14:26:23
很高興幫助。 MultiViews對於一些人來說非常棒(防止大量使用.htaccess文件和mod_rewrite規則)以及其他人的禍害。 – meagar 2010-02-02 14:28:51