Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

mod_rewrite RewriteCond: nachgefragt

Hier können Sie Ihre Fragen zum Thema Suchmaschinenoptimierung (SEO) / Positionierung stellen
Neues Thema Antworten
whobee
PostRank 1
PostRank 1
Beiträge: 27
Registriert: 19.07.2005, 00:10

Beitrag von whobee » 26.08.2005, 00:59

Hallo,

seit einiger Zeit schlage ich mich mit mod_rewrite herum und habe da so meine Sorgen....

Konkret:
Ich überschreibe Urls in der Form
www.mydomain.de/name1/name2/param1.param2...param9/
in
www.mydomain.de/script.php?p1=param1&p2 ... .p9=param9

Meine Regeln sehen vereinfacht etwa so aus:
RewriteRule ^/name1/name2/(.*)\.(.*)..../$ /script.php?p1=$1&p2=$2....

Ich will aber nicht alle URLs überschreiben und möchte aus Perfomance-und Esthetik-Gründen :-) Requests auf nicht überschriebene php-Scripte gar nicht erst gegen meine Regeln laufen lassen:

RewriteEngine On
RewriteLogLevel 9
RewriteLog "MyLog"

RewriteCond %{SCRIPT_FILENAME} !^/.*\.php\?.*$
RewriteRule ^/name1/.+/(.*)\.(.*)..../$ /script.php?p1=$1&p2=$2.... [L]
RewriteRule ^/name2/.+/(.*)\.(.*)..../$ /script.php?p1=$1&p2=$2....[L]
...

(Die Regeln tippse ich gerade so zusammen, man möge Syntax-Fehler nachsehen ... )

Wenn ich mir MyLog ansehe,entdecke ich: (Request: /newscript.php?foo=bar)

[inital] init Rewrite engine with requested uri /newscript.php
[inital] applying pattern <patten1> to uri /newscript.php
[inital] applying pattern <patten2> to uri /newscript.php
....
(alle Regeln werden durchgenudelt!)
passthru /newscript.php
(und das ganze nocheinmal (redir#1)
[inital/redir#1] init Rewrite engine with requested uri /newscript.php
[inital/redir#1] applying pattern <patten1> to uri /newscript.php
[inital/redir#1] applying pattern <patten2> to uri /newscript.php
....

Was ist mit meiner RewriteCond???????

Der Dokumentation entnehme ich:
Precede a RewriteRule directive with one or more RewriteCond directives. The following rewriting rule is only used if its pattern matches the current state of the URI and if these additional conditions apply too.

Heisst das, es geht nur *eine* Regel nach einer RewriteCond?
Kann ich durch (m)eine RewriteCond gar nicht verhindern, daß die Regeln angewandt werden?
Wie kann ich es schaffen, das mod_rewrite bei uri newscript.php?... schon vorher quasi abbiegt?

Wann wird den die Bedingung geprüft? Habe jetzt schon einige Zeit rumgeforscht und es sieht so aus, als würden meinen Bedingungen überhaupt nicht ziehen %-( und langsam geht mir die Zeit aus....

Was mache ich falsch?
Wo ist mein Denk- oder Konzeptionsfehler?
kann mir hier jemand weiterhelfen?

Bin für jeden Rat dankbar...
Viele Gruhuß
whobee

p.s. Kennt jemand eine verständliche Docu zu mod_rewrite???? ;-)

Anzeige von ABAKUS

von Anzeige von ABAKUS »


Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

Caterham
PostRank 5
PostRank 5
Beiträge: 329
Registriert: 20.09.2004, 19:12

Beitrag von Caterham » 26.08.2005, 08:50

-> Die Condition bezieht sich immer nur auf die aktuelle Rule, du musst also

Code: Alles auswählen

RWCond %&#123;HTTP_HOST&#125; ^aa
RWRule ^ab /cd &#91;L&#93;
RWCond %&#123;HTTP_HOST&#125; ^aa
RWRule ^de /fg &#91;L&#93;
notieren
-> Das Processing ist Pattern der RewriteRule -> Condition(s) -> Substitution; also nicht Condition -> Pattern Rule -> Substitution - auch wenn das Zeilenmäßig gesehen in der .htaccess anders aussieht. Darum kann die Cond. auch nur ausgeführt werden, wenn der Pattern der Rule matched.
(und das ganze nocheinmal (redir#1)
Dann nutzt du das in .htaccess-Dateien.
SCRIPT_FILENAME
Besser immer hier REQUEST_URI
RewriteRule ^.+\.(php|gif|jpg|css)$ - [L]

RewriteRule ^name1/.+/(.*)\.(.*)..../$ /script.php?p1=$1&p2=$2.... [L]
RewriteRule ^name2/.+/(.*)\.(.*)..../$ /script.php?p1=$1&p2=$2....[L]
Kennt jemand eine verständliche Docu zu mod_rewrite
Die umfassendste Quelle ist immer noch die Apache manual.

-> www.modrewrite.de

Grüße
Robert

whobee
PostRank 1
PostRank 1
Beiträge: 27
Registriert: 19.07.2005, 00:10

Beitrag von whobee » 26.08.2005, 10:59

Die Condition bezieht sich immer nur auf die aktuelle Rule....

Das Processing ist Pattern der RewriteRule -> Condition(s) -> Substitution; also nicht Condition -> Pattern Rule -> Substitution - auch wenn das Zeilenmäßig gesehen in der .htaccess anders aussieht. Darum kann die Cond. auch nur ausgeführt werden, wenn der Pattern der Rule matched.
Das erklärt einiges! Eigentlich alles!!!!
(und das ganze nocheinmal (redir#1)
Dann nutzt du das in .htaccess-Dateien.
Hm... ich habe meine Regeln alle direkt in die httpd.conf geschrieben.....
Mir ist das interne Proccessing von mod_rewrite einfach noch nicht klar: Was/Warum passiert redir1#?
Besser immer hier REQUEST_URI
Erfahrungswert?
Mit REQUEST_URI klappt es tatsächlich gleich deutlich besser....

Vielen Vielen Dank, Robert, deine hints haben mich ein gutes Stück weitergebracht.
Vor allem
RewriteRule ^.+\.(php|gif|jpg|css)$ - [L]
tut genau das, was ich wollte und jetzt (bis jetzt) kann ich eigentlich auf meine RewriteConds verzichten. :D

Viele Grüße
whobee