Christian Seiler: Andere Frage zu mod_rewrite

Beitrag lesen

Hallo Andreas,

Vielleicht solltest Du mal über eine Rewrite_Cond nachdenken, also nur bei einer bestimmten Bedingung umschreiben?

Jepp, das ist eine sehr gute Idee. (ich dachte RewriteCond bräuchte man nur für so was wie UserAgent - denkste ;))

Ich stelle mir das in etwa so vor:

RewriteCond %{REQUEST_URI}  ^/images/.*  [OR]
RewriteCond %{REQUEST_URI}  ^/styles/.*  [OR]
RewriteCond %{REQUEST_URI}  ^/index.php.*
RewriteRule ^(.*)$            script.php?url=$1 [L]

So ist das nur leider genau falsch rum ;-) Man müßte die Bedingung negieren, also wenn _nicht_ /images/... aber wie das geht weiß ich nicht. Aber vielleicht hilft es Dir.

Das hilft mir jetzt sehr, laut Anleitung müsste

RewriteCond %{REQUEST_URI}  !^/images/.*
RewriteCond %{REQUEST_URI}  !^/styles/.*
RewriteCond %{REQUEST_URI}  !^/index.php.*
RewriteRule ^(.*)$            script.php?url=$1 [L]

funktionieren. Kann es im Moment leider nicht testen, ich wollte eine Erweiterung meines Mozilla deinstallieren (als root) und diese Routine hat mir freundlicherweise das *komplette* /bin-Verzeichnis weggefegt - jetzt muss ich das manuell rekonstruieren... *ichinstallierenurnochdaswasichbrauche*

Ich weiß nicht in wie weit RegEx hier unterstützt werden, ob man ^ auch zur Negation verwenden kann, vielleicht geht es ja.

Nicht ^ sondern !, in der Anleitung zu RewriteCond stehts drin.

RewriteCond %{REQUEST_URI}  ^/(en|de|es|fr)/.*
RewriteRule ^/(.*?)/(.*)$            script.php?url=$2&lang=$1 [L]

Hätte ich direkt 2 Fliegen  mit einer Klappe geschlagen!

Genau, nur das ich das Problem habe, das bei dem Projekt, wo ich gerade daran arbeite, Mehrsprachigkeit _nicht_ gefordert ist. (sonst habe ich es auch immer so gemacht, bzw. die RewriteCond-Zeile ausgelassen und in RewriteRule halt statts (.*?) (de|en) verwendet)

Noch ein Tipp:

RewriteRule ^/([^/]*)/(.*)$            script.php?url=$2&lang=$1 [L]

geht schneller. :)

Grüße,

Christian

--
Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.