0

I have .htaccess files at multiple levels of a directory heirarchy, each with RewriteRules in them. However, when arequest is made for a file in a subdirectory, only the rules in the most deeply nested .htaccess file (up to the level of the requested file) are ever processed. Even having only a single line with "RewriteEngine On" is a subdirectory is enough to "disable" all rewrites defined in higher directories. This happens both for apache and litespeed httpd.

I had expected (and can't find any information otherwise) that all the RewriteRules would be combined into a single ruleset (presumably with deeper levels being processed last). However this doesn't seem to be happening.

Quite confused :) What am I not understanding?

Thanks, Mike.

1 Answer 1

1

Have you set RewriteOptions Inherit in each .htaccess?

In per-directory context this means that conditions and rules of the parent directory's .htaccess configuration are inherited. Rules inherited from the parent scope are applied after rules specified in the child scope.

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

1
  • Yes, thanks for your help, I had mistakenly thought that that only inherited "options," such as RewriteBase etc... as I had tried it but it wasn't working, I think due to some [L] flags (also though parent rules were applied first!). At any rate inheriting options in this way seems a bit limited, as it (for me at least) strips the current directories prefix (i.e. not that of the parent directory), and also keeps adding the path-info from the initial request URI (not the current state of the substitution). Is this the only mechanism for combining RewriteRules across multiple directories?
    – user62830
    Dec 8, 2010 at 6:39

You must log in to answer this question.