Search code examples
.htaccessloopshttp-redirectinternal-server-errorclean-urls

.htaccess - Clean URL, 500 Internal Server Error


I've got this as my .htaccess:

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ $1.html

# Where it's all about
RewriteRule ^users/([a-zA-Z0-9]+)$ users.php?user=$1
RewriteRule ^users/([a-zA-Z0-9]+)/$ users.php?user=$1

RewriteEngine On
RewriteCond %{HTTP_HOST}  ^www.daltonempire.nl [nocase]
RewriteRule ^(.*) 
http://daltonempire.nl/$1 [last,redirect=301]

I tried to make clean urls, redirecting daltonempire.nl/users/Me to daltonempire.nl/users.php?user=Me.

However, I failed miserably. My website now constantly returns a 500 Internal Server Error. (I possibly somehow created a redirection loop?)

What did I do wrong? (And what do I have to do to fix it?)


Solution

  • Believe you have an extra newline in last rule. Also make sure to use L (Last) flag in all of your rules.

    RewriteEngine on 
    
    # Where it's all about
    RewriteRule ^users/([a-zA-Z0-9]+)/?$ users.php?user=$1 [L,QSA]
    
    RewriteCond %{REQUEST_FILENAME} !-f    
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME}\.php -f 
    RewriteRule ^(.+?)/?$ $1.php [L]
    
    RewriteCond %{REQUEST_FILENAME} !-f    
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME}\.html -f 
    RewriteRule ^(.+?)/?$ $1.html [L]
    
    RewriteCond %{HTTP_HOST} ^www\.(daltonempire\.nl)$ [NC]
    RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301,NE]