2012-09-27 167 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权限..它运行在不同的用户下,有时你可以用它修改系统文件如果设置不正确 –