Converting sites that have been hosted on a Windows server is often frustrating, as IIS allows files to be accessed with any case in their filename. Here’s a simple solution for a site made of static files, using PHP and an Apache 404 handler:
In 404-case-insensitive.php
<?php /* Copyright 2010 The Internet Company LLC * * May be copied under the terms of the MIT software license. */ $directory = dirname($_SERVER['REQUEST_URI']); $base = basename($_SERVER['REQUEST_URI']); if($directory == '/') $directory = ''; $potential = glob($_SERVER['DOCUMENT_ROOT'].$directory."/*"); foreach($potential as $e) { $e = basename($e); if(strtolower($e) == strtolower($base)) { header("Location: $directory/$e"); exit(0); } } Header("HTTP/1.1 404 File Not Found"); echo("Page not found."); ?>
And in .htaccess
ErrorDocument 404 /404-case-insensitive.php