Seite 1 von 2

duplicate content > parameter per htaccess abschneiden

Verfasst: 03.11.2011, 08:30
von Ralfii
Hallo zusammen,
sitze nun schon seit Stunden vor meiner htaccess und bekomme folgendes Problem nicht gebacken:

habe folgenden duplicate content bei Google:
newsletter/newsletter.html?from=3&camp=0310
newsletter/newsletter.html?from=2&camp=0410
newsletter/newsletter.html?from=1&camp=0510 ...

und möchte nun alles auf die newsletter/newsletter.html per 301 umleiten
also die Parameter löschen

hab schon alles mögliche probiert u.A. dies:
RewriteCond %{THE_REQUEST} " (.*)/newsletter/newsletter.html?(.*) "
RewriteRule "" %1/newsletter/newsletter.html [R=301,L]

nur bekomme ich leider einen Fehler und keinen Redirect
Fehler: Umleitungsfehler Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.
die Condition zieht, aber die rewriterule passt wohl nicht

könnt Ihr mir weiterhelfen ?

danke und Grüße
Ralf

Verfasst:
von
Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

Verfasst: 03.11.2011, 20:34
von Melegrian
Probiere mal:

Code: Alles auswählen

RewriteCond %{QUERY_STRING} ^(.*)from(.*)$ [NC]
RewriteRule ^(.*)$ /$1? [L,R=301]

Verfasst: 03.11.2011, 20:53
von Ralfii
Hallo Melegrian,
erst mal vielen Dank für Deine Hilfe ;-))

Es funktioniert aber leider kommt ein Aber:

newsletter/newsletter.html?from=3&camp=0310
wird zu
newsletter/newsletter.html ;-))

aber eben auch zB:
testberichte.html?from=3&camp=0310
wird zu
testberichte.html
und das sollte so nicht sein ;-((

gibts ne Möglichkeit auch noch newsletter.html fest mit einzubauen ?

vielen Dank und Grüße
Ralf

Verfasst:
von

Verfasst: 03.11.2011, 21:20
von chris21

Code: Alles auswählen

RewriteCond %{QUERY_STRING} ^from(.*)$ [NC]
RewriteRule ^newsletter/newsletter.html$ /$1? [L,R=301]

Verfasst: 03.11.2011, 22:36
von Ralfii
Hallo chris21,
auch Dir erst mal dankeschön ;-))

https://localhost/testberichte.html?from=3&camp=0310
>ist perfekt passiert nichts

https://localhost/newsletter/newsletter ... &camp=0310
wirs nun leider aber ins Wurzelverzeichnis
https://localhost geleitet ...

hast Du noch ne Idee ?
danke
Ralf

Verfasst: 03.11.2011, 22:53
von Melegrian
chris21 hat mehr Ahnung und Erfahrung als ich, doch ich würde es dann mal so probieren:

Code: Alles auswählen

RewriteCond %{THE_REQUEST} ^(.*)newsletter/newsletter\.html$
RewriteCond %{QUERY_STRING} ^from(.*)$ [NC] 
RewriteRule ^(.*)$ /$1? [L,R=301]
Ob es funktioniert, das weiß ich Dir aber leider nicht, bin noch beim Lernen.

Verfasst: 03.11.2011, 23:44
von Melegrian
Hatte noch einen kleinen Fehler eingebaut und am Ende einmal (.*) zuwenig. Funktioniert bei mir:

Code: Alles auswählen

RewriteEngine on 

RewriteCond %{THE_REQUEST} ^(.*)demoshop/demo\.php(.*)$
RewriteCond %{QUERY_STRING} ^literatur(.*)$ [NC]
RewriteRule ^(.*)$ /$1? [L,R=301] 
Bei der ersten wird der QueryString abgehängt und nur die demo.php geladen, die zweite bleibt hingegen wie sie ist.

Code: Alles auswählen

http://localhost/demoshop/demo.php?literatur=3
http://localhost/anderer/demo.php?literatur=2

Verfasst: 04.11.2011, 00:08
von chris21
War noch nen kleiner Fehler drin, so geht's:

Code: Alles auswählen

RewriteCond %{QUERY_STRING} ^from(.*)$ [NC]
RewriteRule ^newsletter/newsletter.html$ /newsletter/newsletter.html? [L,R=301] 

Verfasst: 04.11.2011, 20:12
von Ralfii
Hallo Melegrian und chris21,
die Lösungen funktionieren perfekt - hab grad den Code von Chris getestet und schon online gestellt :lol:
Ganz vielen Dank für Eure so schnelle und kompetente Hilfe !
Ich verzweifle immer mit den reg-exp. Irgendwie sind meine Gehirnwindungen hier nicht kompatibel :-?

Viele Grüße
Ralf

Verfasst: 05.11.2011, 17:21
von Ralfii
Hallo Melegrian und chris21,
jetzt hab ich dank Eurer Hilfe fast alles wunderbar umgeleitet.

Ein letztes Problem bekomm ich aber nicht in den Griff:

www.domain.de/?from=3&camp=0711

soll umgeleitet werden zu

www.domain.de

könnt Ihr mir da nochmal helden ?

danke
Ralf

Verfasst: 05.11.2011, 17:28
von chris21

Code: Alles auswählen

RewriteCond %{QUERY_STRING} ^from(.*)$ [NC]
RewriteCond %{REQUEST_URI} ^/(newsletter/newsletter\.html)?$
RewriteRule ^(.*)$ /$1? [L,R=301] 

Verfasst: 05.11.2011, 17:53
von Ralfii
Hallo Chris,
unglaublich das funktioniert !

sag mal kannst Du mir die Wirkung von der zweiten Condition erklären ?
^/(newsletter/newsletter\.html)?$ was bewirkt das ?

wenn ich
RewriteCond %{QUERY_STRING} ^from(.*)$ [NC]
RewriteCond %{REQUEST_URI} ^/(dummy\.html)?$
RewriteRule ^(.*)$ /$1? [L,R=301]

funktioniert das ganze auch ... :roll:

localhost/kontakt/kontakt.html?from=3&camp=0711 es passiert nichts
localhost/?from=3&camp=0711 wird wie gewollt zu localhost

und wenn ich die zweite Cond. ganz rausnehme gehts zwar aber eben auch bei weiteren Kombinationen
localhost/kontakt/kontakt.html?from=3&camp=0711
wird dann auch
zu localhost/kontakt/kontakt.html

:roll: :roll:

Verfasst: 05.11.2011, 18:37
von Melegrian
Eigentlich würde ich das jetzt als

from muss im Query vorkommen und
/(Muster) kann kein-oder-einmal? vorkommen

ansehen. Warum das dann bei Dir auch mit dummy\.html funktioniert, verstehe ich hingegen nicht. Nach meinem Verständnis sollte mit dummy\.html die newsletter/newsletter.html nicht mehr bereinigt werden. Zwischendurch mal den Cache gelöscht und versucht, ob es dann immer noch mit dummy\.html funktioniert? Falls ja, verstehe ich gerade etwas nicht.

Verfasst: 05.11.2011, 19:23
von chris21
@Melegrian:

ich musste die Nachricht von Rafii auch erst zweimal lesen, um zu verstehen, was der da mit dummy testet :) Er testet negativ, um die Regel zu verstehen. Wenn er dummy einsetzt, dann wird nur die Startseite vom QS bereinigt (und die dummy Unterseite, falls es die gäbe), die kontakt... nicht.

@Ralfii:

Melegrian hat es schon gut erklärt:

Das Fragezeichen in der RewriteCond steht dafür, dass das zuvor in den Klammern genannte sog. pattern einmal oder keinmal auftreten kann. Dadurch erreiche ich dann sowohl die Startseite als auch die newsletter/newsletter.html.

Verfasst: 05.11.2011, 21:41
von Ralfii
genau die dummy gibt es nicht ;-)
hab nochmals mehrfach getestet und es funktioniert echt wunderbar
werds dann wohl mit der nicht existenten dummy.html online stellen

Ihr seid echt genial - ohne Euch wär ich darauf wohl nie gekommen !

1. Cond. versteh ich wunderbar (hoffe ich)
RewriteCond %{QUERY_STRING} ^from(.*)$ [NC]
^ = beginn des Strings
from ist der String
(.*) keines oder irgendwelche weitere Zeichen
$ Ende
[NC] egal ob groß oder klein
er nimmt eigentlich alles irgendwie "from" enthält egal ob groß oder klein

nun aber wirds für mich schwierig mit der 2. Condition
RewriteCond %{REQUEST_URI} ^/(dummy\.html)?$
{REQUEST_URI} nimmt sich die relative url
also zB: /index.html oder auch /kontakt/kontakt.html

/(dummy\.html)?
"Das Fragezeichen in der RewriteCond steht dafür, dass das zuvor in den Klammern genannte sog. pattern einmal oder keinmal auftreten kann. Dadurch erreiche ich dann sowohl die Startseite als auch die newsletter/newsletter.html."
>einmal oder keinmal
startseite >kommt keinmal vor
localhost/kontakt/kontakt.html?from=3&camp=0711 >kommt doch auch keinmal vor ...????
es funktioniert, aber genau diesen Teil versteht ich nicht :roll: :roll:

wenns Dir mit dem Eklären zuviel Arbeit ignorier mich einfach :wink:

Liebe Grüße
Ralf