RuD: htaccess optimierung und ordner nicht umleiten

Seid gegrüßt!
DAs ist meine .htaccess

  
RewriteEngine on  
Options FollowSymLinks  
  
RewriteRule ^([-0-9a-z]+)/$ index.php?cat=$1  
RewriteRule ^([-0-9a-z]+)$ index.php?cat=$1  
  
RewriteRule ^([-0-9a-z]+)/([-0-9a-z]+)$ index.php?cat=$1&sub=$2  
RewriteRule ^([-0-9a-z]+)/([-0-9a-z]+)/$ index.php?cat=$1&sub=$2  

Ist irgendwie ganzschön umständlich, aber funktioniert. Kann man das zusammenfassen? Ich kenne mich mit RegEx kaum aus bzw. das mit den zwei Parametern macht mir halt Probleme....Hab schon viele Varianten durch aber nur diese funktioniert immer.

Zudem will ich einen "echten" Ordner admin anlegen und den natürlich direkt ansprechen können und nicht über index.php?cat=admin. Geht das über RewriteCond? Ich habe im Archiv diesen Artikel gefunden, hilft mir aber nicht wirklich weiter....

Für eure Hilfe wäre ich echt dankbar.

--
Bis Später
    
________________________________________________________________
[Testversion meiner Seite] [Zwei unterwegs in Australien]
SelfCode: ie:% fl:( br:^ va:) ls:< fo:| rl:( n4:& ss:) de:> js:| ch:| mo:| zu:)
  1. hi,

    RewriteRule ^([-0-9a-z]+)/$ index.php?cat=$1
    RewriteRule ^([-0-9a-z]+)$ index.php?cat=$1

    RewriteRule ^([-0-9a-z]+)/([-0-9a-z]+)$ index.php?cat=$1&sub=$2
    RewriteRule ^([-0-9a-z]+)/([-0-9a-z]+)/$ index.php?cat=$1&sub=$2
    [/code]

    Ist irgendwie ganzschön umständlich, aber funktioniert. Kann man das zusammenfassen?

    Da es dir egal ist, ob ein schliessender Slash angegeben wurde oder nicht, kannst du ihn einfach als optional angeben - also /? - und jeweils die erste/zweite und dritte/vierte zu einer Regel zusammenfassen.

    (Damit wäre ein Inhalt aber plötzlich unter zwei URLs erreichbar. Da sollte man vielleicht eher überlegen, ob man im einen Fall nicht einen Redirect macht.)

    Zudem will ich einen "echten" Ordner admin anlegen und den natürlich direkt ansprechen können und nicht über index.php?cat=admin. Geht das über RewriteCond? Ich habe im Archiv diesen Artikel gefunden, hilft mir aber nicht wirklich weiter....

    Du könntest in einer RewriteCond abfragen, ob die Umgebungsvariable REQUEST_FILENAME nicht einem existenten Verzeichnis entspricht - siehe Doku bzgl. RewriteCond, Flag -d.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Seid gegrüßt!
      OK jetz sieht die so aus

        
      RewriteEngine on  
      Options FollowSymLinks  
        
      RewriteCond %{REQUEST_FILENAME} !^.*admin  
      RewriteRule ^([-0-9a-z]+)/?$ index.php?cat=$1  
        
      RewriteCond %{REQUEST_FILENAME} !^.*admin  
      RewriteRule ^([-0-9a-z]+)/([-0-9a-z]+)/?$ index.php?cat=$1&sub=$2  
      
      

      (Damit wäre ein Inhalt aber plötzlich unter zwei URLs erreichbar. Da sollte man vielleicht eher überlegen, ob man im einen Fall nicht einen Redirect macht.)

      Das versteh ich nicht. Meinst du, dass www.domain.tld/test und www.domain.tld/test/ das selbe ist?  Ist doch aber so gewollt. Oder was ist genau das Problem?

      Du könntest in einer RewriteCond abfragen, ob die Umgebungsvariable REQUEST_FILENAME nicht einem existenten Verzeichnis entspricht - siehe Doku bzgl. RewriteCond, Flag -d.

      Wenn ich -d hinter die Condition setze kommt ein 500er Error.

      --
      Bis Später
          
      ________________________________________________________________
      [Testversion meiner Seite] [Zwei unterwegs in Australien]
      SelfCode: ie:% fl:( br:^ va:) ls:< fo:| rl:( n4:& ss:) de:> js:| ch:| mo:| zu:)
      1. Seid gegrüßt!

        Achso, ich habe was vergessen:
        wenn ich jetz www.domain.tld/admin aufrufe, wird ein cat=admin dahinter gesetzt. Das ist doch aber über die Condition ausgeschlossen ?!

        --
        Bis Später
            
        ________________________________________________________________
        [Testversion meiner Seite] [Zwei unterwegs in Australien]
        SelfCode: ie:% fl:( br:^ va:) ls:< fo:| rl:( n4:& ss:) de:> js:| ch:| mo:| zu:)
      2. hi,

        (Damit wäre ein Inhalt aber plötzlich unter zwei URLs erreichbar. Da sollte man vielleicht eher überlegen, ob man im einen Fall nicht einen Redirect macht.)
        Das versteh ich nicht. Meinst du, dass www.domain.tld/test und www.domain.tld/test/ das selbe ist?  Ist doch aber so gewollt. Oder was ist genau das Problem?

        Es ist wenig empfehlenswert, Inhalte unter verschiedenen URLs zur Verfügung zu stellen.
        Dann verlinkt dich ein Seitenbetreiber mit /inhalt, ein zweiter mit /inhalt/ - und ein SuMa-Bot findet beide Adressen, unter beiden den gleichen Inhalt - was soll er davon halten? Bestenfalls das Ranking auf beide aufteilen, im worst case als doppelten Content abstrafen.

        Also besser für eine Adresse entscheiden, unter der dieser Inhalt erreichbar sein soll - entweder /inhalt oder /inhalt/ - und dann bei der Anfrage auf die jeweils andere Adresse einen expliziten Redirect auf die "richtige" machen.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }