2012-09-27 113 views
13

我訪問的「超摺疊的.htaccess文件,並小心使用PHP添加停止htaccess的重定向

Rewrite/http://google.com/ 

這樣做。現在我無法訪問任何目錄中的php文件來恢復更改。

有沒有什麼我可以在根目錄的子目錄中停止在該文件夾內的重定向?

謝謝。

而且請不要問有關使用FTP客戶端中的「意外」 ..愚蠢的錯誤

+19

+1爲笑 – Peon

+0

我也是......哈哈:) – fsenart

+0

調用服務器的管理員刪除該文件/行? –

回答

5

我聯繫的服務器管理員,都笑吧..不過有趣的,雖然如何阻止它重定向但如果我使用mod_rewrite它不應該發生。

隨着mod_alias的'Redirect,你搞砸了。該指令應用於整個開發板,從htaccess文件所在的路徑節點開始(如果它位於htaccess文件中),或者它位於其中的路徑節點。因此,唯一的解決方案是獲取管理員刪除它。

但是,使用mod_rewrite時,如果使用htaccess文件,其行爲與<Directory>塊內的行爲不同。目錄內路徑節點中的htaccess文件內的規則優先於父目錄中htaccess文件內的規則。所以,如果你有2名htaccess中:

/.htaccess

RewriteEngine On 
RewriteRule ^/? http://google.com/ 

/tmp/.htaccess

RewriteEngine On 
RewriteRule ^/?tmp/ http://stackoverflow.com/ 

你去http://yourdomain.com/tmp/,你」將被重定向到http://stackoverflow.com/,因爲tmp目錄中的規則優先於父目錄中的規則。換句話說,父目錄中的規則根本不會被應用,除非您使用RewriteOptions Inherit directive來繼承父目錄中的任何規則。

正因爲如此,你可以簡單地創建具有以下內容的htaccess文件:

RewriteEngine On 

使用FTP上傳到你的子目錄,並上傳您用來更改父目錄的htaccess文件的php文件。然後,只需使用瀏覽器並轉到該子目錄中的該php文件。

說完只需開啓您的子目錄重寫引擎,沒有任何規則,是指:

  1. 我有mod_rewrite的活躍在這個目錄
  2. 在因爲重寫引擎是在此目錄中打開,忽略所有所有父目錄中的規則。
  3. 由於mod_rewrite的規則集爲空(無實際RerwiteRule的)什麼也不會發生在所有
  4. 這個目錄訪問沉綿重寫引擎上,mod_rewrite的什麼也不做,以便就好像重寫引擎關閉。

聲音違反直覺,但這就是它的工作原理。

+0

謝謝,有道理。 –

1

連接的更多細節。在你的FTP客戶端啓用隱藏文件(嘗試FileZilla,這個可以讓你做到這一點)。在你的超級目錄中刪除.htaccess。如果此文件中包含其他數據,請將其複製到本地計算機,進行更改並再次上載。

下面是一些更多的幫助:http://www.intrepid.com.au/how-to-view-htaccess-with-filezilla/

+0

我只能訪問ft目錄中的'我的目錄'。 –

+1

ouch ...如果找不到其他方法,請讓系統管理員知道。你不應該首先修改那個'.htaccess'文件。 –

+0

PHP不關心FTP權限..它運行在不同的用戶下,有時你可以用它修改系統文件如果設置不正確 –