htaccess optimierung und ordner nicht umleiten
RuD
- webserver
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.
hi,
RewriteRule ^([-0-9a-z]+)/$ index.php?cat=$1
RewriteRule ^([-0-9a-z]+)$ index.php?cat=$1RewriteRule ^([-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
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.
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 ?!
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