/ / URLs intern zwischen Ordnern umschreiben, außer für index.php - apache, .htaccess, mod-rewrite

URLs intern zwischen Ordnern umschreiben, außer für index.php - apache, .htaccess, mod-rewrite

Ich habe zwei Ordner:

/forum/admin
/forum/adminhide

Ich hätte gerne eine .htaccess-Datei im Forum-Ordner, die intern alles außer index.php on / admin to / adminhide neu schreiben würde.

Beispiel:

http://website.com/forum/admin/index.php -> don"t do anything
http://website.com/forum/admin/image.png -> internal rewrite to http://website.com/forum/adminhide/image.png

Alle meine Versuche haben bisher nur interne Serverfehler hervorgebracht.

Antworten:

1 für die Antwort № 1

Dies könnte funktionieren (in einer .htaccess-Datei auf Stammebene):

RewriteRule ^forum/admin/index.php$ - [S=1]
RewriteRule ^forum/admin/(.*) forum/adminhide/$1

URLs, die der ersten Regel entsprechen, werden nicht neu geschrieben (da die Substitution den magischen Wert hat) -), und das [S=1] Flag bewirkt, dass die nächste Regel (die das tatsächliche Neuschreiben ausführt) übersprungen wird, wenn die erste Regel übereinstimmt.

Beachten Sie, dass dies Ihre Anforderungen sehr wörtlich interpretiert: jeden URL-Pfad beginnend mit forum/admin/ wird umgeschrieben, außer für forum/admin/index.php. Möglicherweise möchten Sie die erste Regel etwas lockerer ändern, beispielsweise:

RewriteRule ^forum/admin/(index.php(/.*)?)?$ - [S=1]

Dies entspricht auch den URL-Pfaden (und schließt somit das Neuschreiben aus) forum/admin/ und forum/admin/index.php/whatever.


Bearbeiten: Wenn Sie die .htaccess-Datei dafür in die forum Ordner, nur die Initiale entfernen forum/ von den Regeln und festgelegt RewriteBase passend stattdessen:

RewriteBase /forum/

RewriteRule ^admin/index.php$ - [S=1]
RewriteRule ^admin/(.*) adminhide/$1