In my main public directory, I have this .htaccess file, however when visiting /register I get a 404 error.
Options +FollowSymlinks
RewriteEngine On
RewriteRule ^register$ register.php
With this, I want to make anyone who visits /register to use /register.php. I am certain that mod_rewrite is enabled and AllowOverride All is present in my virtual host file.
Does anyone know how I can troubleshoot this? All I get is The requested URL /register was not found on this server.
Virtual host:
<VirtualHost *:80>
ServerAdmin my@email.com
ServerName my.site.com
DocumentRoot /home/mark/public
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/mark/public>
Options All MultiViews ExecCGI
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /home/mark/logs/public_error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /home/mark/logs/public_access.log combined
</VirtualHost>
You need to turn off MultiViews:
It’s messing with optional content negotiation. From the apache documentation:
If you’re going to have a rule to rewrite
/registerto/register.php, you don’t want MutliViews mucking things up before it even gets to your rewrite rules.