13

我访问了一个“超级文件夹”的 .htaccess 文件并意外添加了

Rewrite / http://google.com/

这是使用 php 完成的。现在我无法访问任何目录中的 php 文件来恢复更改。

我可以在 root 的子目录中做些什么来停止该文件夹内的重定向吗?

谢谢你。

并且请不要询问有关“事故”的更多细节......愚蠢的错误

4

2 回答 2

5

我联系了服务器管理员,都笑了。虽然如何阻止它重定向仍然很有趣,尽管如果我使用 mod_rewrite 不应该发生这种情况。

使用 mod_alias' Redirect,你就完蛋了。该指令全面应用,从 htaccess 文件所在的路径节点(如果它在 htaccess 文件中)或<Directory>它所在的块的路径节点开始。所以唯一的解决方案是让管理员删除它。

但是,对于 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指令从父目录继承任何规则。

因此,您可以简单地使用以下内容创建一个 htaccess 文件:

RewriteEngine On

使用FTP上传到你的子目录,上传你用来改变父目录的htaccess文件的php文件。然后只需使用您的浏览器并转到子目录中的那个 php 文件。

在您的子目录中简单地打开重写引擎,没有任何规则,意味着:

  1. 我在这个目录中激活了 mod_rewrite
  2. 由于该目录开启了重写引擎,所以忽略所有父目录中的所有规则。
  3. 由于 mod_rewrite 规则集是空白的(没有实际RerwiteRule的),根本没有任何反应
  4. 访问这个目录,即使重写引擎打开,mod_rewrite 什么也不做,就好像重写引擎关闭一样。

听起来违反直觉,但这就是它的工作原理。

于 2012-09-27T20:39:45.980 回答
1

使用您的 FTP 客户端进行连接。在您的 FTP 客户端中启用隐藏文件(试试 FileZilla,这个可以让您做到这一点)。在您的超级目录中删除.htaccess。如果此文件中有其他数据,请将其复制到本地计算机,进行更改并再次上传。

这里有更多帮助: http: //www.intrepid.com.au/how-to-view-htaccess-with-filezilla/

于 2012-09-27T12:12:00.687 回答