我访问了一个'超级文件夹的.htaccess文件并意外添加了
Rewrite / http://google.com/
Run Code Online (Sandbox Code Playgroud)
这是使用PHP完成的.现在我无法访问任何目录中的php文件以恢复更改.
我可以在root的子目录中执行任何操作来停止该文件夹中的重定向吗?
谢谢.
请不要询问有关"意外"的更多细节.愚蠢的错误
我联系了服务器管理员,都嘲笑它..虽然如果我使用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文件.
简单地在您的子目录中打开重写引擎,没有任何规则,意味着:
RerwiteRule
的),根本没有任何事情发生听起来很直观,但这就是它的工作原理.