Fale
Fale

Reputation: 404

.htaccess returns 500 for a simple redirect in Laravel

I have created an app in Laravel. My initial .htaccess was:

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
</IfModule>
<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

And it worked properly for the domain api.viglug.org. After I added the m.forum.viglug.org domain (with the same root directory of api.viglug.org). At this point was exactly the same to call api.viglug.org and m.forum.viglug.org. I wanted to use the m.forum.viglug.org for the folder api.viglug.org/mobile so I thought it would have worked with this .htaccess:

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
</IfModule>
<IfModule mod_rewrite.c>
    RewriteCond %{HTTP_HOST} m\. [NC] 
    RewriteRule ^(.*)$ index.php/mobile/$1 [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

I was wrong. It keeps returning error 500 if I use m.forum.viglug.org, while api.viglug.org works as expected. How can I fix this?

Upvotes: 0

Views: 1510

Answers (1)

IMSoP
IMSoP

Reputation: 97783

The original rewrite only runs on files which do not exist as real files or directories, due to these two conditions:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Have you tried adding those two conditions above your additional rule?

# Mobile site
RewriteCond %{HTTP_HOST} m\. [NC] 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/mobile/$1 [L]

# Normal site
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

Upvotes: 1

Related Questions