php - 停止 htaccess 重定向

标签 php .htaccess

我访问了“ super 文件夹”的 .htaccess 文件并意外添加了

Rewrite / http://google.com/

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

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

谢谢。

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

最佳答案

I contacted server admin, both laughed at it.. Still interesting though how to stop it redirecting although it shouldn't happen if I use mod_rewrite.

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

但是,对于 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 也不执行任何操作,因此就好像重写引擎已关闭一样。

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

关于php - 停止 htaccess 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12620926/

相关文章:

php - 在 MySql 中查找挂起的锁或事务

.htaccess - 复杂的 .htaccess 问题

python - 启动pypi-server时出现"malformed htpasswd file"错误消息

apache - 本地主机上的 htaccess 指的是根目录,而不是文件夹

php - 为 Guzzle 转换此 cURL

php - 在 Linux 中使用 PHP/Shell 脚本从浏览器重启 MySql 服务器

PHP 在提交表单后保持复选框被选中

php - Jquery:从 mysql 获取值

Django 将斜杠附加到 OpenShift 上的静态文件 URL

php - 通过 HTTPS 访问网站正在断开数据库连接