Skip to content

Add note about RewriteOptions Inherit #337

Open
@jamieburchell

Description

@jamieburchell

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions