Suchmaschinenoptimierung
   
 
 

Warum registrieren?

Nur als registriertes Mitglied vom ABAKUS Forum hast Du vollen Zugriff auf alle Funktionen unserer Website. So kannst Du Deine eigenen Fragen auf einen Blick anzeigen lassen und hast die volle Übersicht über neue interessante Themen im Forum für Suchmaschinenoptimierung. Jetzt kostenlos registrieren.

 
Schnellsuche!:  

Cookie & mod_rewrite

Neues Thema eröffnen   Neue Antwort erstellen    ABAKUS Foren-Übersicht -> Webprogrammierung, Templatedesign & Microformats Druckversion
 SQLite als Alternative? Ist das bei Euch freigeschaltet? :: werbebanner b. serverausfall.wie rahmen verschwinden lassen?  
Autor Nachricht
Southmedia
Community-Manager
Community-Manager


Anmeldungsdatum: 20.07.2003
Beiträge: 7302
Wohnort: Karlsruhe

BeitragVerfasst am: 21.10.2005, 18:16    Titel: Cookie & mod_rewrite Antworten mit Zitat Nutzer zur Ignorier-Liste hinzufügen

Ich spiele momentan an einem kleinen Script herum, CommentsTrack light, das es Blognutzern erleichtern soll die eigenen Kommentare in anderen Blogs besser zu verfolgen (mehr Infos hier: http://betamode.de/index.php?s=commentstrack).

Dazu setzt der Domainbesitzer bei sich ein Cookie "owner" mit dem Wert 1 damit er vom Script erkannt werden kann. Kommt er nun von einer anderen Domain auf seine eigene, soll er auf eine bestimmte Datei umgeleitet werden.

Meine mod_rewrite soll nun alle Nutzer die
[1.] dieses Cookie haben,
[2.] die Startseite aufrufen,
[3.] nicht die Domain selbst als Referer
[4.] oder gar keinen Referer haben
[5.] auf die Datei commentstrack.php umleiten.

Ich habe dies in folgenden "Code" umgesetzt, der auch funktioniert:

Code:
RewriteCond %{HTTP_COOKIE} .*owner=1.*
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{HTTP_REFERER} !HTTP_HOST
RewriteCond %{HTTP_REFERER} !^$
RewriteRule ^(.*)$ /commentstrack.php [L]


Meine Frage ist nun einfach ob man die Syntax noch verbessern kann - ich bin da nicht so der Held... Kann jemand helfen?
_________________
Community-Management Abakus-Forum
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen Besuche das Xing-Profil dieses Users
Caterham
PostRank 5
PostRank 5


Anmeldungsdatum: 20.09.2004
Beiträge: 331

BeitragVerfasst am: 22.10.2005, 14:30    Titel: Cookie & mod_rewrite Antworten mit Zitat Nutzer zur Ignorier-Liste hinzufügen

Hi,

nutzt du den Code in einer .hatccess oder in der httpd.conf?

%{REQUEST_URI} ^/$ kannst du besser im Pattern der RewriteRule unterbringen, dieser wird vor den Conditions geprüft. Bei (.*) würde jeder Request zuerst dort reinlaufen und dann an den Conditions scheitern


Zitat:
[3.] nicht die Domain selbst als Referer
Die 1. Referer-Cond. besagt, dass die Zeichenkette HTTP_HOST nicht im Referer vorkommen darf. ENVs sind hier (im rechten Teil der Condition) nicht verfügbar. Entweder wird der Host notiert
Zitat:
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.de
oder du nutzt
Zitat:
RewriteCond %{HTTP_REFERER}<>%{HTTP_HOST} !^(.+)<>\1


.htaccess
Code:
RewriteCond %{HTTP_COOKIE} .*owner=1.*
RewriteCond %{HTTP_REFERER}<>%{HTTP_HOST} !^(.+)<>\1
RewriteCond %{HTTP_REFERER} !^$
RewriteRule ^$ /commentstrack.php [L]



httpd.conf (einziger unterschied ist der führende Slash im Pattern der RewriteRule):
Code:
RewriteCond %{HTTP_COOKIE} .*owner=1.*
RewriteCond %{HTTP_REFERER}<>%{HTTP_HOST} !^(.+)<>\1
RewriteCond %{HTTP_REFERER} !^$
RewriteRule ^/$ /commentstrack.php [L]


Grüße
Robert
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Southmedia
Community-Manager
Community-Manager


Anmeldungsdatum: 20.07.2003
Beiträge: 7302
Wohnort: Karlsruhe

BeitragVerfasst am: 22.10.2005, 15:09    Titel: Cookie & mod_rewrite Antworten mit Zitat Nutzer zur Ignorier-Liste hinzufügen

Danke Robert,

das ganze wird wohl mehrheitlich in der .htaccess genutzt werden - aber auch nicht schlecht was ich tun muss wenn es denn ma in die httpd.conf soll.

Zitat:
%{REQUEST_URI} ^/$ kannst du besser im Pattern der RewriteRule unterbringen, dieser wird vor den Conditions geprüft. Bei (.*) würde jeder Request zuerst dort reinlaufen und dann an den Conditions scheitern

Okay, ich dachte bisher dass die Rule überhaupt erst angeschaut wird wenn die Conditions erfüllt sind. Wenn dann weitere URLs dazukommen bei denen das Script greifen soll, lässt es sich so auch schöner durch eine weitere Rewrite-Rule erweitern, oder?

Zitat:
Die 1. Referer-Cond. besagt, dass die Zeichenkette HTTP_HOST nicht im Referer vorkommen darf. ENVs sind hier (im rechten Teil der Condition) nicht verfügbar.

Bist du dir da absolut sicher? Da meine Server gerade down sind *hüstel* auf denen ich die ganzen Sachen liegen habe kann ich leider nicht rumprobiern, aber eigentlich dachte ich gestern dass er damit Referer vom eigenen Host ausgeschlossen hätte...

Code:
RewriteCond %{HTTP_REFERER}<>%{HTTP_HOST} !^(.+)<>\1

Könntest du das ein wenig erklären?
_________________
Community-Management Abakus-Forum
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen Besuche das Xing-Profil dieses Users
Caterham
PostRank 5
PostRank 5


Anmeldungsdatum: 20.09.2004
Beiträge: 331

BeitragVerfasst am: 22.10.2005, 16:12    Titel: Cookie & mod_rewrite Antworten mit Zitat Nutzer zur Ignorier-Liste hinzufügen

Zitat:
? Da meine Server gerade down sind *hüstel*
hm ja... Hauptswitchausfall bei Lambdanet :-/
Zitat:
Wenn dann weitere URLs dazukommen bei denen das Script greifen soll, lässt es sich so auch schöner durch eine weitere Rewrite-Rule erweitern, oder?
Da bietet sich es oft an, die RegEx zu ändern, also aus ^$ wird dann z.B.
Zitat:
^$|^abc
, was sowohl den "root-request" abfängt als auch den filepath, der mit abc beginnt.

Zitat:
Zitat:
Die 1. Referer-Cond. besagt, dass die Zeichenkette HTTP_HOST nicht im Referer vorkommen darf. ENVs sind hier (im rechten Teil der Condition) nicht verfügbar.

Bist du dir da absolut sicher?
Ja, da ich es schon einmal selbst versuchen wollte. Sowohl der Pattern der RewriteRule als auch der Pattern der Condition lassen nur RegEx-Ausdrücke zu. (selbst wenn es gehen würde, müsstest du die ENV in %{...} "einkleiden".

Zitat:
Zitat:
RewriteCond %{HTTP_REFERER}<>%{HTTP_HOST} !^(.+)<>\1


Könntest du das ein wenig erklären?
Die Cond. vergleicht beide Strings. Im Teststring werden %{HTTP_REFERER} und %{HTTP_HOST} "zu einem Teststring" verschmolzen, getrennt durch <> (man könnte auch &&& oder sonstwas als Trenner verwenden, das hat nichts mit Ungleich zu tun). Im Pattern wird dann der teststring geprüft. In der Gruppe ist dann alles bis zu den Zeichen <> enthalten, also der Wert der ENV %{HTTP_REFERER}. \1 ist eine RegEx interne backreference und enthält den Wert aus der Gruppe, also den Referer.

"Aufgelöst" sieht das dann so aus:
Zitat:
RewriteCond http://domain.de/herkunftsdateidatei/<>http://domain.de !^http://domain.de/herkunftsdateidatei/<>http://domain.de/herkunftsdateidatei/

Fett hervorgehoben ist der Teil, der aus %{HTTP_HOST} "matched". Da das Ende der Zeichenkette durch $ nicht markiert wurde, reicht hier der Teilmatch. Zugegeben, das Konstrukt ist ein wenig komplex...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Southmedia
Community-Manager
Community-Manager


Anmeldungsdatum: 20.07.2003
Beiträge: 7302
Wohnort: Karlsruhe

BeitragVerfasst am: 22.10.2005, 18:43    Titel: Re: Cookie & mod_rewrite Antworten mit Zitat Nutzer zur Ignorier-Liste hinzufügen

Caterham hat Folgendes geschrieben:
Zitat:
Zitat:
RewriteCond %{HTTP_REFERER}<>%{HTTP_HOST} !^(.+)<>\1


Könntest du das ein wenig erklären?

Die Cond. vergleicht beide Strings. Im Teststring werden %{HTTP_REFERER} und %{HTTP_HOST} "zu einem Teststring" verschmolzen, getrennt durch <> (man könnte auch &&& oder sonstwas als Trenner verwenden, das hat nichts mit Ungleich zu tun). Im Pattern wird dann der teststring geprüft. In der Gruppe ist dann alles bis zu den Zeichen <> enthalten, also der Wert der ENV %{HTTP_REFERER}. \1 ist eine RegEx interne backreference und enthält den Wert aus der Gruppe, also den Referer.

"Aufgelöst" sieht das dann so aus:
Zitat:
RewriteCond http://domain.de/herkunftsdateidatei/<>http://domain.de !^http://domain.de/herkunftsdateidatei/<>http://domain.de/herkunftsdateidatei/

Fett hervorgehoben ist der Teil, der aus %{HTTP_HOST} "matched". Da das Ende der Zeichenkette durch $ nicht markiert wurde, reicht hier der Teilmatch. Zugegeben, das Konstrukt ist ein wenig komplex...


Kann es sein das das nicht ganz funktioniert? %{HTTP_HOST} hat ja kein http:// dabei.

Das lässt sich ja noch durch ein einfaches
Code:
RewriteCond %{HTTP_REFERER}<>http://%{HTTP_HOST} !^(.+)<>\1

beheben - nun kriegen wir wirklich den Vergleich den du oben geschrieben hast:

Zitat:
RewriteCond http://domain.de/herkunftsdateidatei/<>http://domain.de !^http://domain.de/herkunftsdateidatei/<>http://domain.de/herkunftsdateidatei/

Nur das funktioniert ja auch überhaupt nicht, der String ist kürzer als das Pattern - das kann doch gar nicht funktionieren, oder?
_________________
Community-Management Abakus-Forum


Zuletzt bearbeitet von Southmedia am 22.10.2005, 19:58, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen Besuche das Xing-Profil dieses Users
Southmedia
Community-Manager
Community-Manager


Anmeldungsdatum: 20.07.2003
Beiträge: 7302
Wohnort: Karlsruhe

BeitragVerfasst am: 22.10.2005, 19:56    Titel: Cookie & mod_rewrite Antworten mit Zitat Nutzer zur Ignorier-Liste hinzufügen

So also ich hab es nun ausprobiert, es funktioniert tatsächlich nicht.

Ich hab allerdings nun noch ziemlich lange dran rumgespielt und folgendes rausbekommen:

Code:
RewriteCond http://%{HTTP_HOST}<>%{HTTP_REFERER} !^(.+)(<>)\1


Das wird dann "umgeschrieben" zu

Zitat:
RewriteCond http://domain.de<>http://domain.de/herkunftsdateidatei/ !^http://domain.de<>http://domain.de


und das passt weil der String länger ist als das Pattern.

Kannst du mir folgen Robert, und vor allem hab ich Recht?
_________________
Community-Management Abakus-Forum
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen Besuche das Xing-Profil dieses Users
Caterham
PostRank 5
PostRank 5


Anmeldungsdatum: 20.09.2004
Beiträge: 331

BeitragVerfasst am: 22.10.2005, 20:21    Titel: Cookie & mod_rewrite Antworten mit Zitat Nutzer zur Ignorier-Liste hinzufügen

Zitat:
und vor allem hab ich Recht?
Ja, genau so rum muss das, sorry, kleiner Denkfehler. Bei mir erledigt das Auseinanderschnipseln eine weitere Condition darüber, da ich bei mir einen Teil aus dem Pattern der Rule mit einem Teil einer ENV abgleiche.

Dir Gruppe um <> im Pattern kannst du noch entfernen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Southmedia
Community-Manager
Community-Manager


Anmeldungsdatum: 20.07.2003
Beiträge: 7302
Wohnort: Karlsruhe

BeitragVerfasst am: 22.10.2005, 20:22    Titel: Cookie & mod_rewrite Antworten mit Zitat Nutzer zur Ignorier-Liste hinzufügen

Im Blog mal zusammengefasst:
http://betamode.de/2005/10/22/mod_rewrite-kommt-der-besucher-nicht-von-der-eigenen-domain/

Die Gruppe war übrigens ein Überbleibsel vom Debugging...

Nochmal ein kleines Update um auch den unwahrscheinlichen Fall einer Abfrage über https:// und unterschiede in der Groß-Klein-Schreibung der Domains abzufangen:

Code:
RewriteCond %{HTTP_HOST}<>%{HTTP_REFERER} ^(.+)<>(http://|https://)?\1(.*)$ [NC]


Ich hoffe ich hab das richtig eingebaut...

Letzte verbleibende Unsicherheit ist nun wenn jemand von www.domain.de auf domain.de linkt oder andersrum. Aber ehrlich gesagt ist mir das dann doch ein wenig zu blöd - selbst schuld wer sowas macht.

Viel gelernt über mod_rewrite heute - danke dir!
_________________
Community-Management Abakus-Forum
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen Besuche das Xing-Profil dieses Users
Caterham
PostRank 5
PostRank 5


Anmeldungsdatum: 20.09.2004
Beiträge: 331

BeitragVerfasst am: 22.10.2005, 20:59    Titel: Cookie & mod_rewrite Antworten mit Zitat Nutzer zur Ignorier-Liste hinzufügen

Statt
Zitat:
(http://|https://)?
kannst du auch einfach
Code:
https?://
verwenden.

Grüße
Robert
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Southmedia
Community-Manager
Community-Manager


Anmeldungsdatum: 20.07.2003
Beiträge: 7302
Wohnort: Karlsruhe

BeitragVerfasst am: 22.10.2005, 21:06    Titel: Cookie & mod_rewrite Antworten mit Zitat Nutzer zur Ignorier-Liste hinzufügen

Wow, stimmt.

Machst du mod_rewrite eigentlich hauptberuflich oder so?
_________________
Community-Management Abakus-Forum
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen Besuche das Xing-Profil dieses Users
Caterham
PostRank 5
PostRank 5


Anmeldungsdatum: 20.09.2004
Beiträge: 331

BeitragVerfasst am: 22.10.2005, 21:13    Titel: Cookie & mod_rewrite Antworten mit Zitat Nutzer zur Ignorier-Liste hinzufügen

Nein, "hauptberuflich studiere" ich Dt. u. Europ. Wirtschaftsrecht an der Uni Siegen.
Mit der Zeit sammelt(e) sich bei mir immer mehr Apache-Wissen an, natürlich auch gefördert durch meine Moderatorentätigkeit auf modrewrite.de

Du kannst ja mal testen, ob das mit dem www und nicht www so funktioniert:
Code:
RewriteCond %{HTTP_HOST}<>%{HTTP_REFERER} ^(www\.)?(.+)<>https?://(www\.)?\2(.*)$ [NC]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Southmedia
Community-Manager
Community-Manager


Anmeldungsdatum: 20.07.2003
Beiträge: 7302
Wohnort: Karlsruhe

BeitragVerfasst am: 22.10.2005, 21:23    Titel: Re: Cookie & mod_rewrite Antworten mit Zitat Nutzer zur Ignorier-Liste hinzufügen

Caterham hat Folgendes geschrieben:
natürlich auch gefördert durch meine Moderatorentätigkeit auf modrewrite.de


Ach okay, ich hatte schon überlegt ob ich mich da nicht auch anmelden sollten...

Zitat:
Du kannst ja mal testen, ob das mit dem www und nicht www so funktioniert:
Code:
RewriteCond %{HTTP_HOST}<>%{HTTP_REFERER} ^(www\.)?(.+)<>https?://(www\.)?\2(.*)$ [NC]


Natürlich funktioniert das Ich hatte gar nicht dran gedacht, dass ich dem (.+) das www. ja quasi wegnehmen kann wenn ich möchte. Perfekt.
_________________
Community-Management Abakus-Forum
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen Besuche das Xing-Profil dieses Users
Neues Thema eröffnen   Neue Antwort erstellen    ABAKUS Foren-Übersicht -> Webprogrammierung, Templatedesign & Microformats
Seite 1 von 1


 






Ähnliche Beiträge
Thema Autor Forum Antworten Verfasst am
Keine neuen Beiträge Bildpfad mit mod_rewrite XTCXTC Webprogrammierung, Templatedesign & Microformats 2 23.07.2010, 23:56 Letzten Beitrag anzeigen
Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten. [S] Programmierer für Mod_Rewrite advaluemedia Marktplatz: Dienstleistungen 0 15.07.2010, 17:19 Letzten Beitrag anzeigen
Keine neuen Beiträge Unterseite mit mod_rewrite auf Unters... kitaro Weiterleitungen und mod_rewrite 6 13.07.2010, 23:08 Letzten Beitrag anzeigen
Keine neuen Beiträge Mod_rewrite 2 domains im verzeichnis ... Maturn Weiterleitungen und mod_rewrite 0 08.07.2010, 15:55 Letzten Beitrag anzeigen
Keine neuen Beiträge mod_rewrite problem mit Wordpress Sergej Weiterleitungen und mod_rewrite 1 07.06.2010, 18:37 Letzten Beitrag anzeigen
Keine neuen Beiträge mod_rewrite auf andere Domain - wohin... Fraym Weiterleitungen und mod_rewrite 1 13.04.2010, 17:42 Letzten Beitrag anzeigen
Keine neuen Beiträge URL mod_Rewrite mittels .htaccess -61- Weiterleitungen und mod_rewrite 6 28.03.2010, 01:04 Letzten Beitrag anzeigen

Suchmaschinenoptimierung Angebote
Suchmaschinenoptimierung | Latent Semantische Optimierung (LSO) | SEO Blog | SEO Online Tools | Suchmaschinenmarketing Angebot | Online Marketing

Impressum

Powered by phpBB © 2001, 2005 phpBB Group


Sie lesen gerade: Cookie & mod_rewrite