.htaccess: RewriteEngine not allowed here

85,448

Solution 1

minimum configuration for your .htaccess to work:

AllowOverride FileInfo Options

allowing all configuration will work as well:

AllowOverride All

Solution 2

Let's say your DOCUMENT_ROOT is /home/foo/web then have this config in your httpd.conf file:

<Directory "/home/foo/web">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

This should take care of RewriteEngine is not allowed error you're getting.

Solution 3

Just an idea, this happened to me, and I've lost a lot of time trying to solve it.

If you have a directory like d:/web/my-sites/some-site/

And you place the .htaccess on d:/web/my-sites/some-site/.htaccess (where it supposed to be).

If you have ANY .htaccess files before this directory, Apache reads that files, and blocks the execution of the entire path, producing an internal server error.

I.E.: You have d:/web/my-sites/.htaccess

Solution 4

In httpd version 2.4 (2.4.3 and 2.4.4), take a look at /etc/httpd/conf.d/wordpress.conf There is one entry for: ....

Change: "AllowOverride Options" to "AllowOverride All"

in wordpress.conf also in addition to changing httpd.conf. Restart the http server before the changes will take effect.

Share:
85,448
Admin
Author by

Admin

Updated on June 29, 2020

Comments

  • Admin
    Admin almost 4 years

    I uploaded the .htaccess to the server and received an Error 500 (Internal Server Error).

    And in the error log I had the following error:

    .../.htaccess: RewriteEngine not allowed here

    But mod_rewrite.so is enabled.

    So, do I need to change

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    

    to

    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    

    in the /etc/httpd/conf/httpd.conf file?

    Or could it be something else? The .htaccess file should be okay, because it works perfectly fine on my localhost. I just don't want to screw anything up.

    Here's part of my .htaccess file:

    Options All -Indexes
    
    Options +FollowSymLinks
    
    RewriteEngine On
    
  • Admin
    Admin over 12 years
    Oh, I think I will use that thanks! But I don't think that gets rid of the problem that RewriteEngine is not allowed.
  • Sérgio
    Sérgio almost 8 years
    AllowOverride All wroked but AllowOverride FileInfo Options doesn't, wp-includes/.htaccess: deny not allowed here
  • Ilyas karim
    Ilyas karim over 7 years
    @Jacek Kaniuk How to allow htaccess in 1and1
  • benck
    benck over 7 years
    I just found a solution, stackoverflow.com/questions/32084190/…
  • MrWhite
    MrWhite about 6 years
    This should still depends on how/where you have AllowOverride (and AllowOverrideList on Apache 2.4+) set. And possibly the Apache version, since the default value of the AllowOverride directive changed between Apache 2.2 and 2.4.
  • MrWhite
    MrWhite about 6 years
    AllowOverride controls the type of directives that can be used in .htaccess. So whether AllowOverride FileInfo Options is sufficient is entirely dependent on what directives you are using. FileInfo is required for mod_rewrite, FileInfo Options is required for the .htaccess file in the question. To use Deny in .htaccess you also need to include the Limit directive-type. @Sérgio But most just stick with All for "ease of use".
  • MrWhite
    MrWhite about 6 years
    However, contrary to what this answer implies, you should never set anything other than AllowOverride None in the <Directory /> container (as stated in the question) - which refers to the server root - the Apache docs specifically warn against doing this "for security and performance reasons". Instead, this should be set for the specific directory that contains the .htaccess file, such as the DOCUMENT_ROOT, as mentioned in @anubhava's answer.
  • MrWhite
    MrWhite about 6 years
    Just to add, only enable MultiViews if you specifically need it. If you are using mod_rewrite, as in this example, then you probably don't - and this can potentially result in unexpected conflicts.