In meiner lokalen Testumgebung auf meinem Windows-Computer läuft als HTTP-Server Apache, natürlich PHP als Programmiersprache und MariaDB – das Datenbank-Management-System, das kompatibel zu MySQL ist. Alle Komponenten sind separat installiert, also nicht als XAMPP-Paket; aber das nur am Rande.
Natürlich betreibt man lokal keine Suchmaschinenoptimierung, und so ist es eigentlich egal, wie der URL geformt ist. Dennoch möchte man gern alles so testen, als liefe es auf einem Produktiv-Server »da draußen«. Als ich in einem CMS, das ich ausprobieren wollte, die »hübschen URLs« einschaltete, wurde auch die .htaccess-Datei korrekt erstellt. Aber die Website war nicht voll benutzbar, weil sich die Unterseiten nicht besuchen ließen. Es wurden Fehlermeldungen ausgespuckt: die jeweilige Seite sei nicht erreichbar.
Ich dachte zunächst an einen Fehler im CMS. Aber in einem Shopsystem, das ich daraufhin zum Testen installierte, trat genau dasselbe Phänomen auf. Also kam mir die Idee: Die .htaccess-Datei wird nicht ausgelesen oder deren Anweisungen werden nicht befolgt. Das Modul mod_rewrite war allerdings installiert. Ich wusste aber nicht, was in der Konfigurationsdatei des Apache-Servers falsch sein könnte.
Bei Stack Overflow fand ich die Lösung (danke an Sidney Veiga und todofixthis): In der httpd.conf muss man im zweiten Bereich Directory
(dort, wo das Wurzelverzeichnis, DocumentRoot
, angegeben wird) AllowOverride
auf All
setzen. Bei mir hatte None
gestanden.