server-configs-apache icon indicating copy to clipboard operation
server-configs-apache copied to clipboard

Add note about `RewriteOptions Inherit`

Open jamieburchell opened this issue 3 years ago • 3 comments

If you use the h5bp Apache config in a server configuration, and add a virtual host and a directory block with custom rewrite rules, none of the h5bp rewrite rules will work. This is because the new rewrite rules overwrite existing ones by default.

Do you think it's worth mentioning this anywhere?

E.g.

Let's say you have this (taken from h5bp) in your main config file:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} "!(^|/)\.well-known/([^./]+./?)+$" [NC]
    RewriteCond %{SCRIPT_FILENAME} -d [OR]
    RewriteCond %{SCRIPT_FILENAME} -f
    RewriteRule "(^|/)\." - [F]
</IfModule>

You then create a virtual host configuration:

<VirtualHost *:80>
    ServerName example.com
    # ...
    <Directory /var/www/httpdocs/>
        RewriteEngine On
        # Without inheritance of rewrite rules, none of the h5bp rules take effect :(
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /index.php [L]
    </Directory>
</VirtualHost>

For blocking access to hidden files I prefer to use Require all denied with a LocationMatch, but this is just an example.

It strikes me that it's not immediately obvious that the rules from h5bp have no effect in certain situations. At least, it wasn't to me.

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

jamieburchell avatar Jan 12 '23 10:01 jamieburchell

Thanks for opening this issue @jamieburchell. What about adding the following directive to the H5BP rewrite block?

RewriteOptions InheritDown

LeoColomb avatar Jan 17 '23 23:01 LeoColomb

My concern would be that it has the potential to break existing configurations since it then becomes necessary to explicitly ignore inheritance where it would have been the default behaviour.

jamieburchell avatar Jan 18 '23 08:01 jamieburchell

Indeed, you are right. Then yes, a commented out directive with a line or two docs would make sense in virtual host config templates. 👍

LeoColomb avatar Jan 22 '23 23:01 LeoColomb