Zur Navigation

Anfragen umleiten und Anfragen als gelöscht melden

1 musikliebhaber11

Hallo Jörg,

Du scheinst ja im Bereich htaccess etc. ein ausgewiesener Spezialist zu sein :)

Ich habe drei Fragen zum Umbau meiner Website von XTCommerce zu Magento an Dich, zu denen ich bislang von niemandem eine richtige Lösung bekommen habe:

1) Alle diese Anfragen, die bei:

http://www.website.de/html/cd_infos_eng.php?info=presse&cd=VARIABLE&lang=eng&label=FIRMENNAME
http://www.website.de/html/cd_infos_eng.php?info=bio&cd=VARIABLE&lang=eng&label=FIRMENNAME
http://www.website.de/html/cd_infos_eng.php?info=meinung&cd=VARIABLE&lang=eng&label=FIRMENNAME
http://www.website.de/html/cd_infos_eng.php?info=info&cd=VARIABLE&lang=eng&label=FIRMENNAME
http://www.website.de/html/cd_infos.php?info=presse&cd=VARIABLE&lang=deu&label=FIRMENNAME
http://www.website.de/html/cd_infos.php?info=bio&cd=VARIABLE&lang=deu&label=FIRMENNAME
http://www.website.de/html/cd_infos.php?info=meinung&cd=VARIABLE&lang=deu&label=FIRMENNAME
http://www.website.de/html/cd_infos.php?info=info&cd=VARIABLE&lang=deu&label=FIRMENNAME

sollen hierhin umgeleitet werden:

http://www.website.de/advanced_search/q=?VARIABLE

Ignoriert werden soll also immer alles, was bei der alten URL hinter VARIABLE steht....

Dabei darf "VARIABLE" eine Zeichenfolge sein, die aus Buchstaben und Zahlen bestehen kann:

Mein konkreter Fall: Entweder 4 Gross-Buchstaben und sechs Zahlen: z.B. ABCD123456 oder nur 6 Zahlen: z.B. 123456.

Wie stelle ich das in der htaccess an?

Werden dann (wenn ich in der htaccess entsprechen funktionierende Rewrites eingebaut habe) die veralteten Cache-Einträge bei den Suchmaschinen auch wieder (damit kein weicher 404-Error mehr ausgegeben wird) aktualisiert?
_____

2) Wie und wo kann ich noch (wenn das alte /html Verzeichnis auf dem neuen Server nicht mehr existiert sicherheitshalber alle weitere Anfragen an /html allen Suchmaschinen als gelöscht melden, so dass Suchmaschinen wie Google sie automatisch aus dem Index und aus dem Cache löscht?

_____

3) Kann ich den Suchmaschinen melden, dass die indizierten URLs:

http://www.website.de/shop/index.php
http://www.website.de/shop/product_info.php
http://www.website.de/shop/advanced_search_result.php
http://www.website.de/shop/shop_content.php
http://www.website.de/shop/popup_image.php
http://www.website.de/shop/popup_image.php
http://www.website.de/shop/logoff.php

nicht mehr existieren und alle aus dem Cache "gelöscht" werden sollen?

Vielleicht so?

RewriteRule ^shop/index\.php$ - [G]
RewriteRule ^shop/product_info\.php$ - [G]
RewriteRule ^shop/advanced_search_result\.php$ - [G]
RewriteRule ^shop/shop_content\.php$ - [G]
RewriteRule ^shop/popup_image\.php$ - [G]
RewriteRule ^shop/logoff\.php$ - [G]

Oder wäre es dann besser, sie alle zu

http://www.website.de

weiterzuleiten?

Ist mir eigentlich egal - Hauptsache die veralteten Cache-Einträge bei den Suchmaschinen werden gelöscht :)

Danke für eine kompetente Hilfe und beste Grüße

ml

26.02.2012 18:31

2 Jörg Kruse

Zitat von musikliebhaber11
1) Alle diese Anfragen, die bei:

http://www.website.de/html/cd_infos_eng.php?info=presse&cd=VARIABLE&lang=eng&label=FIRMENNAME
http://www.website.de/html/cd_infos_eng.php?info=bio&cd=VARIABLE&lang=eng&label=FIRMENNAME
http://www.website.de/html/cd_infos_eng.php?info=meinung&cd=VARIABLE&lang=eng&label=FIRMENNAME
http://www.website.de/html/cd_infos_eng.php?info=info&cd=VARIABLE&lang=eng&label=FIRMENNAME
http://www.website.de/html/cd_infos.php?info=presse&cd=VARIABLE&lang=deu&label=FIRMENNAME
http://www.website.de/html/cd_infos.php?info=bio&cd=VARIABLE&lang=deu&label=FIRMENNAME
http://www.website.de/html/cd_infos.php?info=meinung&cd=VARIABLE&lang=deu&label=FIRMENNAME
http://www.website.de/html/cd_infos.php?info=info&cd=VARIABLE&lang=deu&label=FIRMENNAME

sollen hierhin umgeleitet werden:

http://www.website.de/advanced_search/q=?VARIABLE

Ignoriert werden soll also immer alles, was bei der alten URL hinter VARIABLE steht....

Dabei darf "VARIABLE" eine Zeichenfolge sein, die aus Buchstaben und Zahlen bestehen kann:

Mein konkreter Fall: Entweder 4 Gross-Buchstaben und sechs Zahlen: z.B. ABCD123456 oder nur 6 Zahlen: z.B. 123456.

Wie stelle ich das in der htaccess an?

Das würde ich so probieren:

RewriteCond %{QUERY_STRING} cd=([A-Za-z0-9]+)
RewriteRule ^html/cd_infos(_eng)?\.php$ http://example.com/advanced_search/q=%1 [R=301,L]

Werden dann (wenn ich in der htaccess entsprechen funktionierende Rewrites eingebaut habe) die veralteten Cache-Einträge bei den Suchmaschinen auch wieder (damit kein weicher 404-Error mehr ausgegeben wird) aktualisiert?

Im Cache sollte nach einer gewissen Zeit der Inhalt des Weiterleitungsziels angezeigt werden

2) Wie und wo kann ich noch (wenn das alte /html Verzeichnis auf dem neuen Server nicht mehr existiert sicherheitshalber alle weitere Anfragen an /html allen Suchmaschinen als gelöscht melden, so dass Suchmaschinen wie Google sie automatisch aus dem Index und aus dem Cache löscht?

Wenn das Verzeichnis nicht meher existiert, sollten wohl 404 Fehler ausgegeben werden, was den Suchmaschinen ja signalisiert, dass da nichts mehr ist

3) Kann ich den Suchmaschinen melden, dass die indizierten URLs:

http://www.website.de/shop/index.php
http://www.website.de/shop/product_info.php
http://www.website.de/shop/advanced_search_result.php
http://www.website.de/shop/shop_content.php
http://www.website.de/shop/popup_image.php
http://www.website.de/shop/popup_image.php
http://www.website.de/shop/logoff.php

nicht mehr existieren und alle aus dem Cache "gelöscht" werden sollen?

Vielleicht so?

RewriteRule ^shop/index\.php$ - [G]
RewriteRule ^shop/product_info\.php$ - [G]
RewriteRule ^shop/advanced_search_result\.php$ - [G]
RewriteRule ^shop/shop_content\.php$ - [G]
RewriteRule ^shop/popup_image\.php$ - [G]
RewriteRule ^shop/logoff\.php$ - [G]

Ja, das kannst du ja auch testen

Oder wäre es dann besser, sie alle zu

http://www.website.de

weiterzuleiten?

Eine Weiterleitung (301 oder 302) besagt, dass der gesuchte Inhalt nun unter dem Weiterleitungsziel zu finden ist. Dass die Inhalte der Unterseiten nun alle auf der Startseite befindlich sind, ist denke ich eher unwahrscheinlich?

26.02.2012 20:39 | geändert: 26.02.2012 20:42

3 musikliebhaber11

Genial! Probiere ich gleich aus.

Und wie melde ich den Suchmaschinen, dass die Verzeichnisse /html und /shop nicht mehr existieren?

Denn einerseits schreibe ich ja z.B. eine Weiterleitung von

/www.website.de/html/cd_infos.php?info=meinung&cd=VARIABLE&lang=deu&label=FIRMENNAME

nach

http://www.website.de/advanced_search/q=?VARIABLE

Und andererseits soll das ganze Verzeichnis /html und /shop ja eigentlich aus dem Suchmaschinenindex herausgenommen werden.

Schliesst sich das nicht gegenseitig aus?

Das war der Grund, warum ich für die "restlichen" Inhalte von /html und /shop eine Weiterleitung zu http://www.website.de/ überlegt hatte.

Am liebsten wäre mir: Weiterleitung der oben beschriebenen "VARIABLE"-phps (die sich auch in /html befanden) und alles andere (was nicht "VARIABLE"-phps hat und sich ebenfalls in /html befand sowie alle Suchmaschinen-Treffer des Verzeichnisses /shop) wird aus dem Suchmaschinenindex herausgelöscht.

26.02.2012 20:53

4 Jörg Kruse

Und wie melde ich den Suchmaschinen, dass die Verzeichnisse /html und /shop nicht mehr existieren?

Die Suchmaschinen indizieren keine Verzeichnisse, sondern einzelne Seiten. Wenn das Verzeichnis gelöscht wurde und es für eine Seite unterhalb dieses Verzeichnis-Pfades keine andere Anweisung (wie z.B. eine Weiterleitung) gibt, sollte der Webserver dafür einen Status Code 404 zurückgeben.

26.02.2012 21:48

5 musikliebhaber11

OK. Wäre es dann korrekt, wenn ich folgende Zeilen komplett so in die htaccess einbauen würde?

RewriteCond %{QUERY_STRING} cd=([0-9]+)

[Anmerkung: Brauche doch nur Zahlen, keine Buchstaben]

RewriteRule ^html/cd_infos(_eng)?\.php$ http://www.musterdomain.de/advanced_search/result/?q=%1 [R=301,L]
RewriteRule ^html/cd_infos_oben(_eng)?\.php$ http://www.musterdomain.de/advanced_search/result/?q=%1 [R=301,L]
RewriteRule ^html/cd_infos_unten(_eng)?\.php$ http://www.musterdomain.de/advanced_search/result/?q=%1 [R=301,L]
RewriteRule ^shop/index\.php$ - [G]
RewriteRule ^shop/product_info\.php$ - [G]
RewriteRule ^shop/advanced_search_result\.php$ - [G]
RewriteRule ^shop/shop_content\.php$ - [G]
RewriteRule ^shop/popup_image\.php$ - [G]
RewriteRule ^shop/logoff\.php$ - [G]

Und die letzten Zeilen mit den [G] Anweisungen würden dann den Suchmaschinen melden, dass alle mit den genannten php-Dateien verbundenen Abfragen einen 404 bringen.
Korrekt?

Oder gibt's da noch Korrekturbedarf?

:)

Danke und beste Grüße

ml

26.02.2012 21:53

6 Jörg Kruse

Die RewriteCond gilt nur für die jeweils folgende RewriteRule, muss also entsprechend wiederholt werden. Du kannst die betreffenden Rules aber auch noch in eine zusammenfassen:

RewriteRule ^html/cd_infos(_oben|_unten)?(_eng)?\.php$ http://www.musterdomain.de/advanced_search/result/?q=%1 [R=301,L]

[G] erzeugt einen Status Code 410 "Gone", welcher in diesem Fall mindestens genauso gut ist wie ein 404 "Not Found"

26.02.2012 22:42

7 musikliebhaber11

Prima. Mache ich so.

Allerdings brauche ich dann doch auch für jede [G] Anweisung auch eine "RewriteCond". Wie sieht diese denn dann aus?

Also

RewriteCond XYXY
RewriteRule ^shop/index\.php$ - [G]
RewriteCond XYXY
RewriteRule ^shop/product_info\.php$ - [G]
RewriteCond XYXY
RewriteRule ^shop/advanced_search_result\.php$ - [G]
RewriteCond XYXY
RewriteRule ^shop/shop_content\.php$ - [G]
RewriteCond XYXY
RewriteRule ^shop/popup_image\.php$ - [G]
RewriteCond XYXY
RewriteRule ^shop/logoff\.php$ - [G]

Danke und besten Gruss

ml

27.02.2012 09:18

8 musikliebhaber11

Last but not least:

Ich möchte sowohl

/shop/index.php?cPath=1

als auch

/shop/index.php?cPath=1&language=en

als auch

/shop/index.php?cPath=1&language=de

permanent zu

/testverzeichnis/testhtml (ohne html-Endung)

weiterleiten.

Wie mache ich das? :(

Danke und besten Gruss

ml

27.02.2012 09:32

9 Jörg Kruse

Allerdings brauche ich dann doch auch für jede [G] Anweisung auch eine "RewriteCond".

Nicht zwangsläufig

Wie sieht diese denn dann aus?

Das hängt davon ab, wofür du die RewriteCond benötigst. Wenn du die Rules nur bei einem bestimmten Query String ausführen möchtest, kannst du das ja analog zur ersten Rule machen.

Ich möchte sowohl

/shop/index.php?cPath=1

als auch

/shop/index.php?cPath=1&language=en

als auch

/shop/index.php?cPath=1&language=de

permanent zu

/testverzeichnis/testhtml (ohne html-Endung)

weiterleiten.

Wie mache ich das? :(

Wenn (optional mit anderen Parametern) "cPath=1" im Query String enthalten sein soll, kannst du das so probieren:

RewriteCond %{QUERY_STRING} cPath=1
RewriteRule ^shop/index\.php$ http://example.com/testverzeichnis/testhtml [R=301,L]

27.02.2012 10:34 | geändert: 27.02.2012 10:35

10 musikliebhaber11

Hallo Jörg,

es funktionieren alle Rewrites perfekt so wie Du es beschrieben hast. Danke.

Nur ein Problem:

RewriteCond %{QUERY_STRING} cd=([A-Za-z0-9]+)
RewriteRule ^html/cd_infos(_oben|_unten)?(_eng)?\.php$ http://www.testdomain.de/catalogsearch/result/?q=%1 [R=301,L]

geht nicht, wenn ich bei dem Query_STRING z.B.

ABCD123456 habe und eigentlich bei der Weiterleitung NUR die Zahlen 0-9 "angeben" möchte.

Also Query_String-Ergebnis ist z.B.

ABCD123456

Angezeigt werden auf

http://www.testdomain.de/catalogsearch/result/?q=%1

soll aber nur 123456 (ohne ABCD).

Und - ganz wichtig (habe ich gerade gemerkt):

Wenn Query_String-Ergebnis z.B. 005 ist oder 003, dann wird

bei

http://www.testdomain.de/catalogsearch/result/?q=%1

nur nach "5" oder "3" und nicht (was richtig wäre) nach "005" oder "003" gesucht.

Gibt es da eine Möglichkeit, das zu korrigieren?

Danke und besten Gruss!

ml

27.02.2012 12:50