2013-05-02 127 views
2

昨天我在這裏問了一個問題,用戶「faa」試圖幫助我,但不幸的是我們無法解決問題。重寫規則導致403 forbbiden錯誤

原來的問題就在這裏:Rewriting url with htaccess when a directory exists

我做一個簡單的重寫,但它不工作(顯然),由於目錄的訪問權限。

驗證碼:

*動態頁面:url.com/index.php?page=download

重寫規則:^ $下載/index.php?page=download

問題:

存在一個名爲「download」的目錄。 當重寫規則嘗試將動態頁面*重寫爲路徑「下載」時,它將返回403 FORBBIDEN錯誤,並將頁面重寫爲「download /?page = download」。

現在,如果我將該目錄重命名爲其他內容,如「下載」,那麼它就可以工作。

- 編輯 -

我的服務器,默認情況下,保護每個目錄與 「403 Forbbiden錯誤」。我相信這是它不工作的原因,但我不確定。 確實是衝突嗎? 發生了什麼?

回答

2

/下載/?頁=下載

爲什麼發生這種情況的原因是因爲地方mod_dir重定向對於那些缺少尾部斜槓後面的斜線目錄中的所有請求。這會干擾您的重寫規則。由於您的服務器自動設置爲拒絕列出目錄,因此可能會安全地繼續並關閉目錄斜槓:

DirectorySlash Off 
+0

,這簡直太棒了!你是由神經元組成的嗎?這簡直是​​完美! DA ANSWA!非常感謝。你能提供給我更多關於這個問題的細節嗎?它背後的想法仍然對我來說是抽象的 – Darkeden 2013-05-03 02:20:35

+0

@Darkeden沒什麼好說的,它只有2個模塊正在對請求做些什麼,在URL文件映射管道的末端,你已經重寫了URI(mod_rewrite)和請求被標記爲重定向(mod_dir),所以你最終會出現一些奇怪的行爲。 – 2013-05-03 02:23:12

0

嘗試

RewriteRule ^download[/]?$ index.php?page=download 

規則即使路徑用/提供相匹配,所以該目錄下載不能被訪問。

確保即使在重定向後RewriteRule也會執行。

+0

它沒有用。 – Darkeden 2013-05-02 20:31:23

+0

我在我的問題上做了一個小小的編輯,請最後一行 – Darkeden 2013-05-02 20:35:01