rnlsn
rnlsn

Reputation: 1

.htaccess without matching ifmodule?

I am trying to deploy a laravel api with apache, but I am constant getting "internal server error".In errorlog, error is defined with "C:/Apache24/htdocs/ErenA/public/.htaccess: without matching section". I tried changing .htaccess file, delete the ifmodule element in httpd.conf and keeping only "directory index index.html index.php" but nothing seems to working

so here is my .htaccess code:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^public
    RewriteRule ^(.*)$ public/$1 [L]
    RewriteRule ^ index.php [L]
</IfModule>
    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

And Also I will add httpd.conf ifModule:

   <IfModule dir_module>
        DirectoryIndex index.php index.html
    </IfModule>

All AllowOverride is All and require all is granted in config file. Can someone please help me?

Upvotes: 0

Views: 1689

Answers (1)

matiaslauriti
matiaslauriti

Reputation: 8122

You have 2 IfModule closing (</IfModule>), but only 1 opens <IfModule dir_module>

So your content should be like this:

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond %{REQUEST_URI} !^public
    RewriteRule ^(.*)$ public/$1 [L]
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

See that I have removed the middle </IfModule> and because you continue using Rewrite module (RewriteCond and RewriteRule), I just put those inside...

Upvotes: 0

Related Questions