htaccess / beliebiges Unterverzeichnis / case insensitiv
Dhansen
- webserver
Hallo,
ich suche eine Möglichkeit mit mod_rewrite und .htaccess, dass bei jedem beliebigen Verzeichnis kein Unterschied zwischen Groß- und Kleinschreibung gemacht wird.
Also
ob domain.de/de/Hansi oder domain.de/de/HANSI soll immer auf domain.de/de/hansi führen.
genauso alle weiteren Unterverzeichnisse von domain.de/de/
habe zwar schon den htaccess-Befehl gefunden, bei eine bestimmte Datei die Groß- und Kleinschreibung zu "deaktivieren", doch eben nicht für alle Verzeichnisse eines Hauptverzeichnisses
ob domain.de/de/Hansi oder domain.de/de/HANSI soll immer auf domain.de/de/hansi führen.
Also ich habe auch keine direkte Lösung, hoffe folgendes irgendwie dabei helfen kann.
.Htaccess
RewriteRule (.*)/(.*) /redir.php?uri=$1/$2 [L]
redir.php
<?php
// NICHT getestet
$uri = sauber_machen($_GET['uri']);
$uri = strtolower($uri);
header ('HTTP/1.1 301 Moved Permanently');
header ('Location: '.$uri);
?>
Also ich habe auch keine direkte Lösung, hoffe folgendes irgendwie dabei helfen kann.
.Htaccess
$1 --> Pfad
$2 --> Seite und ggf QueryString
RewriteRule (.*)/(.*) /redir.php?uri=$1/$2 [L]
Nö. In $2 ist nur der Pfad.
Deshalb ganz einfach
RewriteRule ^(.*)$ /redir.php?uri=$1 [L,QSA]
QSA = Query-String-Append
mfg Beat
Hi!
ich suche eine Möglichkeit mit mod_rewrite und .htaccess, dass bei jedem beliebigen Verzeichnis kein Unterschied zwischen Groß- und Kleinschreibung gemacht wird.
Warum nicht mit mod_speling und CheckCaseOnly?
habe zwar schon den htaccess-Befehl gefunden, bei eine bestimmte Datei die Groß- und Kleinschreibung zu "deaktivieren", doch eben nicht für alle Verzeichnisse eines Hauptverzeichnisses
Meinst du damit das Flag NC? Oder wie sehen deine Versuche diesbezüglich aus?
Lo!
Ja, genau das NC Flag.
Aber in den Beispielen, die ich gesehen habe, bringt das nur etwas für einzelne Dateien.
Gibt jemande domain.de/de/HANSI ein ruft er auf dem Server ja ein anderes Verzeichnis auf, als domain.de/de/hansi womit die Regel innerhalb von /de/hansi hinfällig ist.
Hi!
ich suche eine Möglichkeit mit mod_rewrite und .htaccess, dass bei jedem beliebigen Verzeichnis kein Unterschied zwischen Groß- und Kleinschreibung gemacht wird.
Warum nicht mit mod_speling und CheckCaseOnly?
habe zwar schon den htaccess-Befehl gefunden, bei eine bestimmte Datei die Groß- und Kleinschreibung zu "deaktivieren", doch eben nicht für alle Verzeichnisse eines Hauptverzeichnisses
Meinst du damit das Flag NC? Oder wie sehen deine Versuche diesbezüglich aus?
Lo!
Hi!
Bitte für Beispiel-Domains die extra dafür vorgesehenen Namen verwenden und nicht irgendwelche noch dazu real existierende.
Gibt jemande domain.de/de/HANSI ein ruft er auf dem Server ja ein anderes Verzeichnis auf, als domain.de/de/hansi womit die Regel innerhalb von /de/hansi hinfällig ist.
Dann leg sie doch ins Verzeichnis de.
Ein Client ruft keine Verzeichnisse oder Dateien auf, er fragt nach einer URL. Ob der Webserver zur Antwort in ein Verzeichnis greift oder nicht, interessiert den Client nicht. Und den Webserver in erster Linie auch nicht. Er wertet zunächst die URL aus. Wenn er dabei zu einem Pfadteil ein Verzeichnis findet, dann wertet er auch die darin enthaltenen Regeln aus. Wenn Hansi oder HANSI unterhalb von de nicht existieren, dann greift deine dortige Regel, die case-insensitiv auf hansi passt, weil obendrein die RewriteConds kein existierendes Verzeichnis oder Datei gefunden haben.
Lo!
Vielen Dank, aber wie lautet denn nun der Befehl, damit alle Unterverzeichnisse von /de/ entsprechend case-insensitive ausgewertet werden?
Hi!
Vielen Dank, aber wie lautet denn nun der Befehl, damit alle Unterverzeichnisse von /de/ entsprechend case-insensitive ausgewertet werden?
CheckSpelling on
CheckCaseOnly on
Lo!
Hallo und vielen Dank,
wenn ich im Verzeichnis /de/ eine .htaccess-Datei ablege mit nachfolgendem Inhalt, bekomme ich Fehlermeldung 500 - Internal Server Error
Was mache ich falsch?
RewriteEngine On
RewriteBase /de/
CheckSpelling on
CheckCaseOnly on
wenn ich im Verzeichnis /de/ eine .htaccess-Datei ablege mit nachfolgendem Inhalt, bekomme ich Fehlermeldung 500 - Internal Server Error
Was mache ich falsch?
RewriteEngine On
RewriteBase /de/
CheckSpelling on
CheckCaseOnly on
Offensichtlich ist eines der Module oder beide nicht geladen.
Merke. Apache ist Modular. Welche Fähigkeiten dir in .htaccess zustehen unterliegt der Frage, welche Module geladen sind.
mfg Beat
Das heißt, ich muss also beim Webanbieter nachfragen, ob er diese Module nachträglich aktiviert?