Seite 1 von 1

Shop Dateien umleiten per htaccsess

Verfasst: 25.05.2006, 17:34
von larilara
Hallo,

ich habe mit Interesse einige Einträge gelesen. Aber keiner konnte mir eine Antwort geben. Vielleicht finde ich hier im Forum Hilfe.

Ich stelle z.Zt. mein Shopsystem um... von einem Perl-Shop (Domainpublisher) auf einem PHP-Shop und möchte nun nach und nach zumindest die Rubriken umleiten da der alte Shop bzw. die Artikel gut bei Goggle zu finden sind.

Der alte Shop ist in dem Verzeichnis cgi-bin installiert und dort ist auch schon eine HTACCSESS Datei vorhanden.

Wie könnte ich die Artikel bzw. Rubriken auf den neuen Shop umleiten? Habe schon mehrere Tips probiert wie hier beschrieben ist aber leider hat nichts funktioniert bzw. kommt eine Fehlermeldung.

Desweiteren kommt hinzu das im Verzeichnis : meine-domain.de/cgi-bin/dpshop eine htaccsess-datei vorhanden ist wo jede menge schon was eingetragen ist. Kann man dort denn noch was hinzufügen ohne was zu zerschiessen? :-)

Und was macht Google daraus? Ich möchte ja keine Doppelten Einträge haben was zum Ausschluss führen könnte (Hab ich hier gelesen).

Eigentlich möchte ich die alten Dateien vom alten Shop nach und nach Löschen aber dann läuft natürlich Google ins Leere.

Habe die httaccsess-Datei so erstellt: Redirect permanent /cgi-bin/dpshop/_989204035911_Funkger%C3%A4te%C2%A0%C2%A0%C2%A0Zubeh%C3%B6r/Ascom/Ascom%C2%A0FuG%C2%A011b%C2%A0/%C2%A0SE110%C2%A0/%C2%A0SM180/_01.02.02.html https://www.meine-domain.de/domain/inde ... II-N-.html usw.

Bei einigen Seiten klappt die Umleitung bei den meisten aber nicht.

Google leitet z.B. um auf : https://www.meine-Domain.de/cgi-bin/dps ... E/_03.html

Unter dem Google-Text steht der Link: https://www.meine-domain.de/cgi-bin/dpshop/ __T O P - ANGEBOTE/_03.html (mit den leerzeichen)

Und wenn ich bei dem ersten Link (rechte Maus-Taste) auf Eigenschaften gehe dann kommt: https://www.meine-domain.de/cgi-bin/dpshop/__TÂ OÂ PÂ -Â ANGEBOTE/_03.html

Und keiner dieser Links reagiert auf die Umleitung.
Irgendwas mag die htaccsess-Datei nicht. Da es wie gesagt bei einigen Funktioniert.

Irgendwie hat vielleicht der Server Probleme mit dem Kauderwelch %$%&&% usw. Was könnte man machen?

Wie gesagt kenne ich mich mit der Materie nicht gut aus und hoffe das ich nicht zuviel geschrieben habe.

Und bitte mich nicht gleich in der Luft zerreissen wenn ich zuviel frage :lol:

Freue mich auf Antworten

Herzliche Grüße

Rudolf

Verfasst:
von

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

Re: Shop Dateien umleiten per htaccsess

Verfasst: 26.05.2006, 10:46
von haha
larilara hat geschrieben:Desweiteren kommt hinzu das im Verzeichnis : meine-domain.de/cgi-bin/dpshop eine htaccsess-datei vorhanden ist wo jede menge schon was eingetragen ist. Kann man dort denn noch was hinzufügen ohne was zu zerschiessen? :-)
Das kommt darauf an, was schon drinsteht. Grundsätzlich kannst Du aber so viel anhängen, wie Du lustig bist. Gut, wenn's in die Hunderte Kilobyte geht, kriegt der Server irgendwann einen Rappel, weil diese Datei bei _jeder_ Anfrage, die irgendwo in oder unterhalb dieses Verzeichnisses landet, gelesen wird.

Das hat jetzt nicht direkt etwas mit Deinem Problem zu tun, aber trotzdem: Falls Du mehrere Hundert Redirect-Einträge benötigst, wäre es sinnvoll, stattdessen auf RewriteMap zurückzugreifen. Mit RewriteMap lassen sich indizierte Dateien nutzen, was die ganze Umwandlerei beschleunigt.
Und was macht Google daraus? Ich möchte ja keine Doppelten Einträge haben was zum Ausschluss führen könnte (Hab ich hier gelesen).
Immer schön die Kirche im Dorf lassen. Was macht Google woraus?
Habe die httaccsess-Datei so erstellt: Redirect permanent /cgi-bin/dpshop/_989204035911_Funkger%C3%A4te%C2%A0%C2%A0%C2%A0Zubeh%C3%B6r/Ascom/Ascom%C2%A0FuG%C2%A0…SM180/_01.02.02.html https://www.meine-domain.de/domain/inde ... II-N-.html usw.
Prinzipiell richtig.
Google leitet z.B. um auf : https://www.meine-Domain.de/cgi-bin/dps ... E/_03.html

Unter dem Google-Text steht der Link: https://www.meine-domain.de/cgi-bin/dpshop/ __T O P - ANGEBOTE/_03.html (mit den leerzeichen)

Und wenn ich bei dem ersten Link (rechte Maus-Taste) auf Eigenschaften gehe dann kommt: https://www.meine-domain.de/cgi-bin/dpshop/__TÂ OÂ PÂ -Â ANGEBOTE/_03.html
Du hast ein Problem mit unterschiedlichen Zeichenkodierungen.

Schriftzeichen werden, wie Du vielleicht weißt, als Zahlen transportiert. Welches Zeichen durch welchen Wert repräsentiert wird, steht in Zeichentabellen (auch: Zeichensätze, Codepages). %C2%A0 stellt zwei Bytes dar (mit den Werten C2, dezimal 194, und A0, dezimal 160), ist eine Kodierung namens utf-8 des Unicode-Zeichensatzes und ergibt dort eine Art Leerzeichen.
Decodiert man diese zwei Bytes nicht mit utf-8/Unicode, sondern mit dem für diese Zwecke weitaus gebräuchlicheren iso-8859-1, bekommt man stattdessen zwei Zeichen, das  und -das dürfte Zufall sein- ein Leerzeichen.

Kurz: Irgendwas dekodiert da die URL mit der falschen Zeichentabelle.

Zur Klärung wäre es hilfreich, wenn Du an Hand eines realen Beispiels nochmal genau aufschreiben könntest,…
1. Welche alte URL weitergeleitet werden soll.
2. Was Du in der .htaccess zu diesem Zweck eingetragen hast.
3. Was bei Google auftaucht.
4. Wo man hinkommt, wenn man auf den Link bei Google klickt.

Verfasst: 26.05.2006, 18:43
von larilara
Hallo und vielen Dank für Deine Prompte Antwort.

Ich habe leider gar keine Ahnung aber folgendes festgestellt: :wink:

Du hast vollkommen Recht mit der Zeichencodierung. Ich habe mal ein bißchen gesucht im Forum und einen Eintrag gefunden der das mit dem Rewrite in der Htaccsess Datei erklärt. Ich habe das mal ausprobiert und geht einwandfrei mit einfachen links. z.B.

RewriteEngine on
RewriteBase /

RewriteRule ^\ Frequenzen__Akkupacks/_23.html$ https://www.meine-domain/domain/index.php [R=301,L]

aber mit dem Link von Google auf:
https://www.meine-domain/cgi-bin/dpshop ... g/_09.html

geht leider nicht. Nun.. wie Du schreibst muß das Umkodiert werden? Ich habe eine Seite gefunden wo man die URL Decodieren kann. Dabei kommt heraus:

https://www.meine-domain/cgi-bin/dpshop/__Preisliste Anforderung/_09.html

Aber dann kommt eine URL mit  und Leerzeichen was htaccsess auch nicht mag.

Ich habe mehrere Tools ausprobiert und immer mit dem gleichen ergebnissen.

Versteh ich irgendwie nicht :oops:

Verfasst:
von

Verfasst: 26.05.2006, 20:30
von haha
larilara hat geschrieben:Ich habe leider gar keine Ahnung aber folgendes festgestellt:
Jaja, Erkenntnis der eigenen Schwächen ist der erste Schritt zur Weisheit ;)
Ich habe eine Seite gefunden wo man die URL Decodieren kann. Dabei kommt heraus:

https://www.meine-domain/cgi-bin/dpshop/__Preisliste Anforderung/_09.html

Aber dann kommt eine URL mit  und Leerzeichen was htaccsess auch nicht mag.
Das ist immer noch das gleiche Problem, diese Dienste dekodieren mit iso-8859-1. Wenn überhaupt, dann bräuchtest Du einen Dienst, der die URL mit utf-8 dekodiert. Das bringt Dich aber auch nicht wirklich weiter.


Du hast also bei Google alte URLs stehen, die in etwa so aussehen: "/__Preisliste%C2%A0Anforderung/_09.html" (nur als Beispiel, ich hab's etwas abgekürzt)? Die dusseligen Sonderzeichen kannst Du überaus trickreich ignorieren:

RedirectMatch permanent "^/__Preisliste..Anforderung/_09\.html$" https://url.der.neuen.seite

RedirectMatch arbeitet wie Redirect, nur mit Mustern statt festen Texten. Muster sind in der Perl-Anleitung lang und breit beschrieben, hier nur die drei benutzten Funktionen:

Im Beispiel sind die beiden Sonderzeichen %C2 und %A0 durch je einen Punkt ersetzt. Punkte stehen in diesen Mustern als Platzhalter für ein beliebiges Zeichen; das Muster passt also auf "__Preisliste Anforderung/_09.html", allerdings auch auf "__PreislisteXYAnforderung/_09.html", "__Preisliste23Anforderung/_09.html" und alle anderen denkbaren Zwei-Zeichen-Kombinationen. Das ist aber meist kein Problem, Du solltest nur drauf achten und dran denken, falls mal irgendwas nicht da landet, wo es soll.

Durchaus noch einen Tick geschickter wäre es, nur das störische Leerzeichen per Platzhalter zu ignorieren: "^__PreislisteÂ.Anforderung/_09\.html$" oder "^__Preisliste%C2.Anforderung/_09\.html$". Die Anzahl der theoretisch möglichen Kombinationen verringert sich dann von etwas über 65000 auf ca. 250. Dieses Beispiel funktioniert, ob's auch bei anderen Sonderzeichen läuft, musst Du im Einzelfall ausprobieren.

Weiterhin beginnt das Muster mit einem ^ und endet mit $, das sind Platzhalter für den Anfang und das Ende des Textes. Das Muster ^bla (lies: Anfang, gefolgt von bla) passt auf blablo, aber nicht auf blobla. Das Muster bla$ (lies: bla am Ende) passt auf blobla, aber nicht auf blablo. Das Muster ^bla$ (lies: Anfang, gefolgt von bla und dann dem Ende) schlußendlich passt nur auf bla, nicht auf blablo und nicht auf blobla.

Drittens, der Punkt von .html hat im Muster einen Rückstrich bekommen: \.html . Das bedeutet, dass dieser Punkt kein Platzhalter ist (wie wir sie ja eben benutzt haben), sondern hier tatsächlich ein Punkt stehen soll und nichts anderes.

Nach diesem Schema sollten sich alle kritischen URLs bändigen lassen. Und im neuen System besser keine Sonderzeichen mehr für die URL benutzen :)

Verfasst: 27.05.2006, 12:04
von larilara
Vielen Dank für Deine Beschreibung. Auch wenn ich die 5x lesen musste :P Bin Blond.

Ich habe sämtliche beispiele ausprobiert wie Du beschrieben hast aber leider funktioniert nichts. Was mache ich denn falsch?

Aber ich probiere weiter

Verfasst: 27.05.2006, 12:29
von larilara
:lol: :lol: Es funktioniert.

Klasse... Du bis gut. Vielen Dank für Deine Hilfe.

Ich muß das ^zeichen am anfang wegglassen.


Herzliche Grüße

Rudolf

Verfasst: 27.05.2006, 14:39
von larilara
Also bis jetzt hat es Wunderbar geklappt..aber nu steh ich wieder vor einem neuen Problem. Der Link:

https://www.meine-domain.de/cgi-bin/dpshop/ BOS__Funkgeräte - Zubehör/AEG/_01.01.html hat Leerzeichen.

Mit Punkten die Leerzeichen zu ersetzten geht nicht.

Was müsste man da eingeben oder muß die URL Encodiert werden?


Gruß

Rudolf

Verfasst: 27.05.2006, 15:57
von haha
larilara hat geschrieben:Ich muß das ^zeichen am anfang wegglassen.
Nein, Du musst den kompletten Pfad angeben. Ich hatte nur

"^/irgendeine_seite\.html$"

geschrieben, um's etwas abzukürzen. Du hast aber /irgendeine_seite.html nicht auf Deinem Server, sondern /pfad/zu/irgendeine_seite.html, worauf das Muster "Anfang und dann /irgendeine_seite.html und dann Ende" logischerweise nicht passt - /irgendeine_seite.html steht schließlich nicht am Anfang vom Text. Der Pfad muss also ins Muster mit rein:

"^/pfad/zu/irgendeine_seite\.html$"

Dann sollte es auch funktionieren.
https://www.meine-domain.de/cgi-bin/dpshop/ BOS__Funkgeräte - Zubehör/AEG/_01.01.html hat Leerzeichen. Mit Punkten die Leerzeichen zu ersetzten geht nicht.
Doch, der Punkt passt auf jedes Zeichen. Hast Du das Muster in Anführungszeichen gesetzt und wirklich für jedes Leerzeichen einen Punkt angegeben? Das geht immer schön nach dem Motto "Jeder nur ein Kreuz".
Falls es sich allerdings nicht um normale Leerzeichen handelt, probiere pro Leerzeichen zwei Punkte. Wie tauchen die bei Google auf, mit %20, einem Plus oder mit mehreren %xy?

Ich habe davon abgesehen mit

RedirectMatch permanent "^/cgi-bin/dpshop/ BOS__Funkgeräte - Zubehör/AEG/_01.01.html$" https://irgend.wo.hin

keine Schwierigkeiten, wird einwandfrei irgendwohin weitergeleitet :)

Verfasst: 31.05.2006, 16:30
von larilara
Also jetzt bin ich wirklich ein wenig Durcheinander :crazyeyes:

Mit dem Firefox funktioniert die Umleitung Einwandfrei wie Du es beschrieben hast.
Nur wenn ich den Link mit dem Explorer aufrufe leitet die Seite nicht weiter.

Das ist doch zum Mäusemelken. :bad-words:

Verfasst: 31.05.2006, 20:53
von haha
larilara hat geschrieben:Mit dem Firefox funktioniert die Umleitung Einwandfrei wie Du es beschrieben hast.
Nur wenn ich den Link mit dem Explorer aufrufe leitet die Seite nicht weiter.
Versuche, mehr oder weniger alles, was nicht a-z, A-Z, 0-9 sowie ._-/ ist, durch .+ im Muster zu ersetzen. Irgendwann müsste es passen.

Verfasst: 31.05.2006, 21:11
von larilara
Ich habe folgenden Link:

https://www.meinedomain.de/cgi-bin/dpshop/ Behördenfunk__Funkgeräte - Zubehör/BBC Kokusai/_01.03.html

Müssen bei den Umlauten Ä Ö usw. auch ein .+ gesetzt werden? Und bei den Leerzeichen wie gehabt ein Punkt?

Ich versteh einfach nicht warum das beim Firefox geht und nicht beim Explorer. Ich habe gelesen das htaccess Browser-Unhabhängig funktionieren soll.

Hatte mich wieder zu früh gefreut :wink:

Verfasst: 01.06.2006, 10:53
von haha
larilara hat geschrieben:Müssen bei den Umlauten Ä Ö usw. auch ein .+ gesetzt werden?
Ja, unbedingt. Gib javascript:alert(escape("/cgi-bin/dpshop/ Behördenfunk__Funkgeräte - Zubehör/BBC Kokusai/_01.03.html")); in die Adressleiste Deines Browsers ein, dann siehst Du, welche Zeichen in %-Kodierungen umgewandelt werden und in Deiner .htaccess .+ benötigen könnten.
Und bei den Leerzeichen wie gehabt ein Punkt?
Erstmal ein Punkt und wenn's nicht will, .+ probieren. Das Kreuz steht für "ein oder mehrere Wiederholungen des vorangehenden Zeichens", zusammen mit dem Punkt davor wird daraus "ein oder mehrere beliebige Zeichen". Generell gilt: So viel wie nötig, so wenig wie möglich.
Ich versteh einfach nicht warum das beim Firefox geht und nicht beim Explorer. Ich habe gelesen das htaccess Browser-Unhabhängig funktionieren soll.
Tut's auch. Das Problem dürfte sein, dass ein Browser aus Sonderzeichen dieses bastelt und ein anderer jenes, je nach dem, welche Zeichentabelle er meint zu Rate ziehen zu dürfen.

Aber zu Deiner Beruhigung: Muster sind häufig mit viel Probiererei verbunden, da bist Du nicht alleine ;)

Verfasst: 01.06.2006, 17:13
von larilara
Ich glaube das klappt..aber das ist ja eine Mordsarbeit 2000 Artikel umleiten.
Besteht eine Möglichkeit Rubriken z.B.:

https://www.meine-domain.de/cgi-bin/dps ... l/_08.html

und alles was nach __Medical/ kommt immer automatisch umzuleiten?

Ich meine wenn einer über die Suchmaschine zu einem Artikel kommt dann automatisch umgeleitet wird zur neuen Rubrik.

Verfasst: 02.06.2006, 22:03
von haha
larilara hat geschrieben:Ich glaube das klappt..aber das ist ja eine Mordsarbeit 2000 Artikel umleiten.
Hoffentlich zwingst Du damit nicht den Server in die Knie. Falls Du die Möglichkeit hast, versuche, den ganze Kram nicht in der .htaccess, sondern in der Server-Konfiguration unterzubringen. Die .htaccess wird bei jedem einzelnen Zugriff, für jede Seite, jede Grafik und was sonst noch, neu geladen, die Server-Konfiguration nur einmal.
Alternativ pack die Weiterleitungen in das Verzeichnis der alten Software (/cgi-bin/dpshop/ vermutlich), dann wird die .htaccess wenigstens nur bei Zugriffen dort geladen.
Besteht eine Möglichkeit Rubriken z.B.:

https://www.meine-domain.de/cgi-bin/dps ... l/_08.html

und alles was nach __Medical/ kommt immer automatisch umzuleiten?
Redirect vergleicht nur den URL-Anfang und hängt bei Übereinstimmung alles, was danach kommt, an die neue URL an.

Redirect /bla/ https://bla.bla/xy/

würde bewirken, dass /bla/ nach /xy/ geht, aber auch /bla/123 nach /xy/123 und dergleichen.

Bei RedirectMatch müsstest Du das, was in die neue URL übernommen werden soll, in der alten URL in Klammern setzen und in die neue mit $n einfügen:

RedirectMatch ^/bla/(.*)$ https://bla.bla/xy/$1

bewirkt das Gleiche wie das Redirect-Beispiel eben. Du kannst auch mehrere Klammern nehmen, auch verschachtelt und entsprechend mit $2 bis $9 einfügen. Der Klammerausdruck kann natürlich auch woanders stehen:

RedirectMatch ^/(.+)/bla$ https://bla.bla/xy/$1/bli

würde /123/bla nach /xy/123/bli umleiten und auch /abc/bla nach /xy/abc/bli.