Das liegt möglicherweise daran, dass bei Anfragen an "/" intern schon die betreffende index-Datei (hier: index.php) in die betreffende Variable eingesetzt wird, bevor mod_rewrite zum Zuge kommt. mod_rewrite sieht also nicht "/", sondern "/index.php" und fabriziert eine Endlosschleife.edvsb hat geschrieben:Bei mir ist es z.B. so, dass wenn ich die index.php umleite auf das Root, dass dann gar nichts mehr geht. Aus dem grund herraus, dass z.b. impressum.html auf index.php?cat=impressum umleitet.
Aus diesem Grund benutze ich im vorliegenden Fall nicht einfach RewriteRule index.php …, was theoretisch genügen würde, sondern greife mit RewriteCond %{THE_REQUEST} … direkt auf die Anfrage vom Webbrowser zu - die bleibt nämlich während der gesamten serverinternen Verwurstung unverändert bestehen.
Man sieht das auch schön in seinem mod_rewrite-Protokoll:
Die Anfrage vom Webbrowser (in Zeile 3 zu sehen) lautete "GET / HTTP/1.1" (nicht etwa "GET /index.php HTTP/1.1"), RewriteRule prüft aber in Zeile 2 schon auf "index.php", weil DirectoryIndex vorher dran war.01 strip per-dir prefix: /var/www/domain/de/index.php -> index.php
02 applying pattern '.*' to uri 'index.php'
03 RewriteCond: input='GET / HTTP/1.1' pattern='^[A-Z]+\s+(.*/)(index)\.[a-z]+(\?index)?\s+HTTP/1\.\d+$' => not-matched