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

RewriteRule soll nur in je eine Richtung greifen

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
Airport1
PostRank 10
PostRank 10
Beiträge: 4489
Registriert: 16.08.2004, 18:50
Wohnort: Backnang / bei Stuttgart

Beitrag von Airport1 » 15.01.2006, 12:43

Angenommen ich habe eine

RewriteRule vote\/([^\/]*)\/?.*$ /vote.php?link_id=$1

damit /vote/1/ nach /vote.php?link_id=1
aufloest. Nun sind aber schon alle moeglichen

/vote.php?link_id=<NUMMER>

bei Google indiziert. Wie schaff ich es dann am saubersten (!) in der htaccess zu sagen:

Loese zwar /vote/<NUMMER>/ zu /vote.php?link_id=<NUMMER> auf,
aber liefere bei direktem Aufruf (kein "SubRequest") von /vote.php?link_id=<NUMMER> eine 410 GONE, oder eine 403 FORBIDDEN Seite.

Es soll also verhindert werden dass die Rules sich gegenseitig ins JENSEITS schiessen oder eine INFINITE LOOP entsteht..

Es soll also /vote/1/ z.B. indiziert werden, vote.php?id=1 aber nicht, bzw. die schon indizierten auf Dauer rausfliegen..

PS: der robots.txt bzw. Google trau ich sonst nicht zu, es zu blicken ;)
Linktauschanfragen zwecklos
https://www.bot-trap.de/ Spamschutz fuer Webmaster - zentrale Meldestelle fuer Web Spam
https://www.airport1.de/blog/ Lombagruschd Blog mid Gardadierle
https://www.ranking-hits.de/ Counter & PR Service

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


mariow
PostRank 4
PostRank 4
Beiträge: 177
Registriert: 08.03.2005, 12:05

Beitrag von mariow » 15.01.2006, 13:03

Nicht schlecht, da musste ich doch gleich mal basteln und gucken.
Ganz einfach ist das nicht, da die zweite Anfrage mit der umgeschriebenen URL intern nicht als Subrequest behandelt wird und man auch per Environment-Var nichts transportieren kann (oder ichhabs nicht hinbekommen).

Da es dir nur darum geht alte URLs ungültig zu machen, sollte es der folgende Ansatz tun:

Code: Alles auswählen

RewriteRule vote\/&#40;&#91;^\/&#93;*&#41;\/?.*$ /vote.php?link_id=$1&subreq=1 &#91;L&#93;

RewriteCond %&#123;REQUEST_URI&#125;     vote\.php
RewriteCond %&#123;QUERY_STRING&#125;    !subreq=1
RewriteRule .* -       &#91;G&#93;
An den sauber umgeschriebenen Aufruf wird einfach ein zusätzlicher URL-Parameter angehangen der dafür sorgt, dass die Anfrage von der "Fehler-Regel" ignoriert wird. Gewinnt keinen Schönheitspreis, aber scheint mir der einzige gangbare Weg zu sein.

BTW: Ich würde die erste Rule noch so abändern damits sauberer wird:

Code: Alles auswählen

RewriteRule vote\/&#40;&#91;0-9&#93;+&#41;\/?.*$ /vote.php?link_id=$1&subreq=1 &#91;L&#93;

Bauchladen
PostRank 6
PostRank 6
Beiträge: 388
Registriert: 24.04.2005, 13:51
Wohnort: Hamburg

Beitrag von Bauchladen » 15.01.2006, 13:24

Airport1 hat geschrieben: Es soll also verhindert werden dass die Rules sich gegenseitig ins JENSEITS schiessen oder eine INFINITE LOOP entsteht..
meinst du den ?
https://www.abakus-internet-marketing.d ... tml#159145

Airport1
PostRank 10
PostRank 10
Beiträge: 4489
Registriert: 16.08.2004, 18:50
Wohnort: Backnang / bei Stuttgart

Beitrag von Airport1 » 15.01.2006, 13:27

Der Trick mit Para anhaengen ist gut, bzw. sehr gut. Aber muss man definitiv so tricksen?
Linktauschanfragen zwecklos
https://www.bot-trap.de/ Spamschutz fuer Webmaster - zentrale Meldestelle fuer Web Spam
https://www.airport1.de/blog/ Lombagruschd Blog mid Gardadierle
https://www.ranking-hits.de/ Counter & PR Service

Bauchladen
PostRank 6
PostRank 6
Beiträge: 388
Registriert: 24.04.2005, 13:51
Wohnort: Hamburg

Beitrag von Bauchladen » 15.01.2006, 13:29

Ich meine es gibt da noch eine Moeglichkeit was mit Subrequests zu machen, aber ich meine auch dass das nichts damit zu tun hatte. Am besten selber noch mal RTFM ;)
Bild

Airport1
PostRank 10
PostRank 10
Beiträge: 4489
Registriert: 16.08.2004, 18:50
Wohnort: Backnang / bei Stuttgart

Beitrag von Airport1 » 15.01.2006, 13:58

Das hab ich auch gefunden mit den SubRequests ... namentlich [NS] ... nur hat das bei mir nicht die Bohne funktioniert, bzw. wurde nicht zw. Requests und SubRequests unterschieden..
Linktauschanfragen zwecklos
https://www.bot-trap.de/ Spamschutz fuer Webmaster - zentrale Meldestelle fuer Web Spam
https://www.airport1.de/blog/ Lombagruschd Blog mid Gardadierle
https://www.ranking-hits.de/ Counter & PR Service

mariow
PostRank 4
PostRank 4
Beiträge: 177
Registriert: 08.03.2005, 12:05

Beitrag von mariow » 15.01.2006, 14:11

Das meinte ich ja oben bereits. Ein Subrequest ist eine Anfrage die von einem anderen Modul gestellt wird. Wenn also z.B. mod_include anfragt ob es /test.txt gibt, dann ist das ein Subrequest.
Wird eine URL von mod_rewrite umgeschrieben, dann wird das Resultat nocheinmal ohne besondere Kennzeichnung an mod_rewrite übergeben - oder ich hab die Kennzeichnung noch nicht gefunden :-)

Babelfisch
PostRank 5
PostRank 5
Beiträge: 204
Registriert: 05.10.2005, 14:15
Wohnort: Leipzig

Beitrag von Babelfisch » 15.01.2006, 16:54

Ohne zusätzlichen Parameter in der URL kannst du es so machen:

Code: Alles auswählen

RewriteRule vote/&#40;&#91;0-9&#93;+&#41;/? /vote.php?link_id=$1 &#91;E=VOTE&#58;OK,L&#93;

RewriteCond %&#123;ENV&#58;REDIRECT_VOTE&#125;  !OK
RewriteRule vote\.php -        &#91;G&#93;
Beim Umschreiben der URL setzt du die Umgebungsvariable 'VOTE' mit dem Wert 'OK'. Wird vote.php direkt aufgerufen, fehlt diese Variable und du sendest ein '410 Gone'.

Frag mich jetzt bitte nicht, warum die Umgebungsvariable 'VOTE' zu 'REDIRECT_VOTE' mutiert? Ich hab selber eine Weile gebraucht dahinter zu kommen - weiß aber nicht, warum das so ist. Hier funktioniert das aber im Apache 2 unter Linux und Windows wunderbar.

mariow
PostRank 4
PostRank 4
Beiträge: 177
Registriert: 08.03.2005, 12:05

Beitrag von mariow » 15.01.2006, 16:58

Ok, so gehts - nicht schlecht. Ich hab den Weg mit der Env-Var wieder aufgegeben weil ich dachte, die ist im zweiten Aufruf nicht mehr verfügbar. Das sich der Name ändert steht wohl nur im Kleingedruckten :-)

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag