Meine Hosting-Firma hat vor kurzem ein Upgrade von Apache 1 auf Apache 2 durchgeführt, und ich habe angefangen, ein ganz anderes Verhalten mit meinem mod_rewrite-Zeug zu beobachten.
Hier ist meine .htaccess-Datei:
DirectoryIndex blog.html
# Various rewrite rules.
<IfModule mod_rewrite.c>
RewriteEngine on
# Rewrite current-style URLs of the form 'showpage.php?url=x'.
RewriteRule ^(.*\.html)$ showpage.php?url=$1 [L,QSA]
</IfModule>
Wenn Sie früher mit Apache 1 zu http://mysite.com/ dann würde der DirectoryIndex zuerst wirksam werden ( http://mysite.com/blog.html ) und dann würde die RewriteRule das in http://mysite.com/showpage.php?url=/blog.html
Wenn Sie jetzt mit Apache 2 auf http://mysite.com/blog.html wird es wie erwartet umgeschrieben, aber wenn Sie zu http://mysite.com/ wird die Datei vanilla blog.html angezeigt, ohne dass sie in showpage.php umgeschrieben wird. Die RewriteRule wird also angewendet vor tritt der DirectoryIndex in Kraft.
Neben dem Hinzufügen einer zusätzlichen Regel explizit für die Root-Seite (was mühsam sein wird, da ich alle Unterverzeichnisse berücksichtigen müsste, die ebenfalls einen DirectoryIndex haben), kennt jemand eine Möglichkeit, Apache 2 dazu zu bringen, die RewriteRule anzuwenden nach Anwendung des DirectoryIndex?
0 Stimmen
Dies funktioniert bei mir mit Apache 2.2.13. Welche Apache-Version verwenden Sie?
0 Stimmen
Ich würde gerne hören, ob Sie jemals eine gute Antwort auf diese Frage bekommen haben. Ich stecke fest bei der Neuimplementierung der Server-Kernfunktionalität (Test auf das Vorhandensein von Verzeichnissen, Anhängen des abschließenden Schrägstrichs) in einer
RewriteCond
und schlimmer noch, ich habe mehrereindex.*
Dinge inDirectoryIndex
und es sieht so aus, als müsste ich Folgendes hinzufügen-f
Tests auch für sie. Die Klumpen häufen sich um das Problem, dass die Neufassung in der falschen Phase angewendet wird.