Guter Abend Lieben Programmierer,.htaccess RedirectMatch bedingter regex nicht
Ich versuche URLs ohne Dateierweiterungen zu behandeln, die besser lesbar durchschnittlichen Internet-Nutzer mit einer .htaccess Umleitung sind, wie http://example.com/file
-http://example.com/file.php
(mit oder ohne query)
Leider bin ich nicht in der Lage mod_rewrite zu verwenden, aber obwohl Umleitung funktioniert, scheint es nicht in der Lage zu sein, meine Anfrage richtig zu handhaben.
beliebige URL behandeln ich
RedirectMatch ^/(?(?=.*\.php(?i).*)|(\w+)(.*)) /$1.php$2
Und
RedirectMatch ^/.*\.php(?i).*|(\w+)(.*) /$1.php$2
Neben der Verwendung $2
und $3
, vorausgesetzt, das Verhalten versuchte mit vielleicht den ersten Muster im Gegensatz zu jedem Wissen extrahieren.
Es sollte Zeichen und Zahlen für $1
und alles andere für $2
(für Anfragen usw. mit ?
Start) extrahieren, wenn es die .php Dateierweiterung enthält.
Validieren die Regex mit https://regex101.com/r/zF2bV9/2 alles sollte gut funktionieren, aber eine dieser Linien an den .htaccess
Umsetzung der Dateiname wird jede beliebige Datei mit „.php“ ersetzen (wie in http://example.com/.php
) und offensichtlich einen Fehler eines nicht vorhandenen produzieren Datei.
Was fehlt mir an dem Code oder der Redirect-Funktionalität?
„und alles andere für $ 2 (beginnend mit für Abfragen usw.?)“ - nur, beachten 'RedirectMatch' Spiele gegen den URL-Pfad nur. Sie können die Abfragezeichenfolge nicht zuordnen. Aber Sie brauchen es auch nicht, da es unverändert zum Ziel weitergegeben wird. – MrWhite
@ w3dk, wenn es einmal richtig mit 'RedirectMatch ^/(\ w +) (. *)/$ 1.php $ 2' in einer anderen Serverkonfiguration funktioniert hat, aber jetzt wird dies zu einer Endlosschleife führen. bekomme ich dich richtig, dass $ 2 überhaupt nicht notwendig ist? Leider kann ich es nicht testen, solange das erste Problem auftritt. – getriebesand
Die bestimmten URLs könnten dies beeinflussen, aber nicht die "Serverkonfiguration". Diese Direktive würde immer zu einer Endlosschleife für eine URL wie '/ file' führen. Ja, $ 2 ist unnötig. – MrWhite