停止htaccess重定向

cod*_*nja 13 php .htaccess

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

Rewrite / http://google.com/
Run Code Online (Sandbox Code Playgroud)

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

我可以在root的子目录中执行任何操作来停止该文件夹中的重定向吗?

谢谢.

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

Jon*_*Lin 5

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

使用mod_alias' Redirect,你被搞砸了.该指令全面应用,从htaccess文件所在的路径节点(如果它位于htaccess文件中)开始,或者<Directory>它所在的块的路径节点.所以唯一的解决方案是获取管理员删除它.

但是对于mod_rewrite,使用htaccess文件时,它与<Directory>块内的行为不同.目录内路径节点中的htaccess文件内的规则优先于父目录中htaccess文件内的规则.所以如果你有2个htaccess文件:

/.htaccess:

RewriteEngine On
RewriteRule ^/? http://google.com/
Run Code Online (Sandbox Code Playgroud)

/tmp/.htaccess中:

RewriteEngine On
RewriteRule ^/?tmp/ http://stackoverflow.com/
Run Code Online (Sandbox Code Playgroud)

然后http://yourdomain.com/tmp/,您将被重定向到,http://stackoverflow.com/因为tmp目录中的规则优先于父目录中的规则.除非您使用该RewriteOptions Inherit指令从父目录继承任何规则,否则不会应用父目录中的规则.

因此,您只需使用以下命令创建htaccess文件:

RewriteEngine On
Run Code Online (Sandbox Code Playgroud)

使用FTP将其上传到您的子目录,并上传您用于更改父目录的htaccess文件的php文件.然后只需使用您的浏览器并转到子目录中的php文件.

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

  1. 我在这个目录中激活了mod_rewrite
  2. 由于在此目录中打开了重写引擎,因此请忽略所有父目录中的所有规则.
  3. 由于mod_rewrite规则集是空白的(没有实际RerwiteRule的),根本没有任何事情发生
  4. 访问此目录,尽管重写引擎已打开,但mod_rewrite不会执行任何操作,因此就像重写引擎已关闭一样.

听起来很直观,但这就是它的工作原理.