2011-10-31 48 views
2

我相信我在尋找Apache的設置或MOD,因爲我需要將其關閉或改變它以某種方式完成此行爲的文件。這裏的交易:不需要阿帕奇從目錄重定向同名

我有我自己的CMS,有它自己的路由器來處理重定向,包括,404錯誤和漂亮的URL。 mod_rewrite規則完美地將適當的請求引導到這個路由器,但是有一個奇怪的情況會導致Apache出現異常,甚至不會將請求發送到路由器。

  • 文件位於www.example.com/contact.form.php
  • 位於 www.example.com/contact/contact-us

請求

  • CMS內容CMS內容應該到達路由器,因爲它不匹配文件系統中存在的文件或目錄。實際上發生的是一些奇怪的請求,它可以找到contact.form.php文件,但不知何故仍然會導致Apache發出自己的404錯誤。

    路由器旨在捕獲404錯誤,那麼Apache的404屏幕不應該被看到。在聯繫人「目錄」之外爲該域輸入的所有URL(無論多麼荒謬)都會將其傳送到我的路由器,並檢索正確的內容或顯示我的404頁面。

    的變通辦法,我拿出這麼遠:

    • 更改文件名form.contact.php - 這會禁用任何CMS內容可能在最終存在www.example.com /表格/ ...
    • www.example.com/contact/

    衝突顯然是聯繫在一起的「目錄」的名稱匹配的PHP文件的第一部分創建一個空目錄名稱。任何時候滿足這個條件都會存在這種行爲,而當它不符合時就不存在。不幸的是,對於CMS,我永遠不能保證「目錄」名稱不會與PHP文件名相沖突。出於這個原因,我的重點是調整Apache。

    我搜索着各種關鍵字組合,我不能在任何地方找到答案。有任何想法嗎?

  • +0

    爲了記錄:我絕對不知道爲什麼創建文件系統修復的空目錄這個問題。 – Trip

    +0

    看起來問題可能與Apache正在嘗試猜測我的文件名的「內容協商」有關。如果任何人都可以提供我需要做的事情的堅實解釋,我會很樂意接受答案。 – Trip

    +0

    http://webmasters.stackexchange.com也許是這個問題的一個更好的地方。 – RoToRa

    回答

    1

    發現了很多搜索後在其他地方的答案。

    問題是選項的MultiView被打開。

    對於我來說,我使用的是虛擬主機,但我在mac OSX Lion上配置了apache的user.conf文件中的大部分設置。我不確定我是否加了這個,還是已經存在...

    這裏是我做過什麼

    1. 打開終端應用
    2. 類型:CD的/ etc/apache2的/用戶
    3. 類型:LS
    4. 從打印出的列表中,你應該請查看與您的用戶名USERNAME.conf匹配的文件,其中USERNAME是您的實際用戶名
    5. 類型:sudo nano USERNAME.conf
    6. 你可能要輸入密碼
    7. 找到這行:選項指數多視圖
    8. 將其更改爲:選項指數
    9. CTRL + X退出,按下「Y」時,提示保存文件並輸入時它要求對文件名

    替代

    您可以添加選項-MultiViews如果你看不到任何東西在那裏。

    如果以上不適用,你也可以編輯你的httpd.conf文件。

    如果你使用虛擬主機,你可以編輯你的httpd-vhosts.conf文件。對於每個站點,請在標記中編輯MultiViews選項。通過添加「Options -MultiViews」或刪除「Options MultiViews」(如果存在)。

    希望這有助於其他人......

    +0

    現在這已經很老了,但是這裏有一個更新。這絕對與MultiView有關,因爲我可以關閉它並且問題消失。然而,我仍然困惑於爲什麼添加具有匹配名稱的空目錄有效地否定了不需要的行爲。自那以後,我一直在使用變通方法。 – Trip