Dhansen: htaccess / beliebiges Unterverzeichnis / case insensitiv

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

  1. 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

    $1 --> Pfad

    $2 --> Seite und ggf QueryString

    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);  
      
    ?>  
    
    
    1. 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

      --
      ><o(((°>           ><o(((°>
         <°)))o><                     ><o(((°>o
      Der Valigator leibt diese Fische
  2. 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!

    1. 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!

      1. 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!

        1. Vielen Dank, aber wie lautet denn nun der Befehl, damit alle Unterverzeichnisse von /de/ entsprechend case-insensitive ausgewertet werden?

          1. 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!

            1. 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

              1. 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

                --
                ><o(((°>           ><o(((°>
                   <°)))o><                     ><o(((°>o
                Der Valigator leibt diese Fische
                1. Das heißt, ich muss also beim Webanbieter nachfragen, ob er diese Module nachträglich aktiviert?