从根目录获取.htaccess以应用于所有目录?

Fab*_*geb 1 apache .htaccess

我的根目录(public_html /)中有一个.htaccess文件,如下所示:(XXX.XX.XX.XX代表IP)

RewriteCond %{HTTP_HOST} ^XXX.XX.XX.XX$ [NC]
RewriteRule ^(.*)$ http://www.justadomain.tld [R=301,L]
Run Code Online (Sandbox Code Playgroud)

在子文件夹和子文件夹的文件夹中也有.htaccess文件,但是我希望这个重写规则在整个帐户的所有目录中都能使用,无论是否存在.htaccess,而不是在每个文件中复制此规则.现有.htaccess文件中的规则应继续有效.

提前感谢您的回答!

Laz*_*One 11

如果要从父.htaccess执行重写规则,则需要在子文件夹中的每个.htaccess中添加以下行:

RewriteOptions inherit
Run Code Online (Sandbox Code Playgroud)

这会强制当前配置继承父级的配置.在每个虚拟服务器上下文中,这意味着继承主服务器的映射,条件和规则.在每个目录上下文中,这意味着继承父目录的.htaccess配置的条件和规则.

从父作用域继承的规则将在子作用域中指定的规则之后应用.

http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions


或者 - 将您的"全局"规则从.htaccess移动到VirtualHost上下文(当然,只有当您可以编辑服务器配置文件时).

  • 1)是的,它将应用来自一个父文件夹的所有规则.要让它应用所有父文件夹中的规则,您必须编辑所有.htaccess文件(在这一个文件上你是正确的).2)不一定 - 这完全取决于规则/冲突和整个重写逻辑.但是,如果URL(或其他"主题")保持不变,那么父规则很可能会接管.**只有一种正确的方法可以找出它在您的设置中的工作方式** - 使用真实示例在真实系统上进行测试. (2认同)