My website needs a .htaccess
file that will redirect a user to index.php
when a page is not found. However, I do not want Apache to send a 404 head
Add this to your .htaccess
file:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
If the redirect to index.php happens u can get the requested uri by using $_SERVER["REQUEST_URI"]
inside index.php
- '-d' (is directory) Treats the TestString as a pathname and tests if it exists and is a directory.
- '-f' (is regular file) Treats the TestString as a pathname and tests if it exists and is a regular file.
- '-s' (is regular file with size) Treats the TestString as a pathname and tests if it exists and is a regular file with size greater than zero.
- '-l' (is symbolic link) Treats the TestString as a pathname and tests if it exists and is a symbolic link.
- '-F' (is existing file via subrequest) Checks if TestString is a valid file and accessible via all the server's currently-configured access controls for that path. This uses an internal subrequest to determine the check, so use it with care because it decreases your servers performance!
- '-U' (is existing URL via subrequest) Checks if TestString is a valid URL and accessible via all the server's currently-configured access controls for that path. This uses an internal subrequest to determine the check, so use it with care because it decreases your server's performance!
More information: http://httpd.apache.org/docs/current/mod/mod_rewrite.html