Recently, we had to move a site that was hosted on a windows machine to a linux machine. All went as expected (had to convert some filenames to lowercase, fix the proper permissions to files and folders). After some testing to determine that everything on the site worked as expected, we came across the strangest thing. Pages that had been shared on Facebook when the site was on Windows, were now unavailable on the Linux machine.
Yes the dreaded 404 page. The pages existed on the site but the generated link on Facebook included Index.php instead of the linux case-sensitive index.php. As it turns out, Apache2 has a cure for this. It has a module, mod_speling, that changes urls to try to find alternatives on the server that match. More information on the apache2 pages https://httpd.apache.org/docs/2.2/mod/mod_speling.html
To enable the module, the procedure is easy. First enable it, by
a2enmod speling
as root or with sudo and then include the directive in the directory you want
CheckSpelling on
The most important parameter to bear in mind when enabling this module (quoting from apache site)
"the directory scan which is necessary for the spelling correction will have an impact on the server's performance when many spelling corrections have to be performed at the same time."