【问题标题】:stop htaccess redirect停止 htaccess 重定向
【发布时间】:2012-09-19 05:05:30
【问题描述】:

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

Rewrite / http://google.com/

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

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

谢谢。

请不要询问有关“意外”的更多细节......愚蠢的错误

【问题讨论】:

  • 调用服务器管理员删除该文件/行?
  • 您可以为此使用命令提示符。
  • 你不是说你没有 .htaccess 的 FTP 访问权限?如果没有别的我相信你应该可以删除它
  • 您可以从其他地方覆盖文件的内容。

标签: php .htaccess


【解决方案1】:

我联系了服务器管理员,两人都笑了。虽然如何阻止它重定向仍然很有趣,尽管如果我使用 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 directive 从父目录继承任何规则。

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

RewriteEngine On

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

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

  1. 我在此目录中启用了 mod_rewrite
  2. 由于该目录开启了重写引擎,所以忽略所有父目录中的所有规则。
  3. 因为 mod_rewrite 规则集是空白的(没有实际的 RerwiteRule's),所以什么也没有发生
  4. 访问该目录,即使重写引擎开启,mod_rewrite 什么也不做,就好像重写引擎关闭一样。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 哎呀...如果找不到其他方法,请告诉系统管理员。你一开始就不应该修改 .htaccess 文件。
    • PHP 不关心 FTP 权限。它在不同的用户下运行,如果设置不正确,有时您可以使用它修改系统文件
    猜你喜欢
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    相关资源
    最近更新 更多