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

Redirect 301 Problem

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
ven
PostRank 4
PostRank 4
Beiträge: 137
Registriert: 18.07.2006, 08:58

Beitrag von ven » 18.02.2007, 15:07

Hallo,

ich habe folgende URL's per Mod_Rewrite umgeschrieben:
https://www.kinder-archiv.de//index.php?list=latest
AUF: https://www.kinder-archiv.de/die-neusten-kinderseiten/

https://www.kinder-archiv.de/index.php?list=top
AUF: https://www.kinder-archiv.de/die-besten-kinderseiten/

Jetzt möchte ich eine permanente 301 Weiterleitung von der jeweils ersten URL auf die zweite.

Hasso hatte mir schon kurz geholfen, aber in der Rule scheint wohl noch ein kleiner Fehler zu sein, denn Momentan kommt die Meldung, dass dieser Aufruf nie beendet werden kann.

Code: Alles auswählen

RewriteCond %{QUERY_STRING} ^list=(latest)$
RewriteRule ^index\.php$ /die-neusten-kinderseiten/? [R=301,L]
RewriteCond %{QUERY_STRING} ^list=(top)$
RewriteRule ^index\.php$ /die-besten-kinderseiten/? [R=301,L] 
Hier die URL zum alten Thread:
https://www.abakus-internet-marketing.d ... 38338.html

Grüße,
ven

Anzeige von ABAKUS

von Anzeige von ABAKUS »


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

chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 18.02.2007, 16:09

Und welcher Datei ist denn der Inhalt tatsächlich zu finden?

Ist er intern immer noch unter index.php?list=latest zu finden und darauf wird nur intern umgeleitet, wenn man /die-neuesten-kinderseiten/ aufruft?

Falls ja, wäre dieses Problem am einfachsten mit einem kleinen PHP-Codeschnipsel in der index zu meistern:

Code: Alles auswählen

<?php
$aufruf = $_SERVER&#91;"REQUEST_URI"&#93;;
if&#40;$aufruf == "index.php?list=latest"&#41;
&#123;
header&#40;"HTTP/1.1 301 Moved Permanently"&#41;;
header&#40;"Status&#58; 301 Moved Permanently"&#41;;
header&#40;"Location&#58; http&#58;//www.kinder-archiv.de/die-neuesten-kinderseiten/"&#41;;
header&#40;"Connection&#58; close"&#41;;
exit&#40;&#41;;
&#125;
else if&#40;$aufruf == "index.php?list=top"&#41;
&#123;
header&#40;"HTTP/1.1 301 Moved Permanently"&#41;;
header&#40;"Status&#58; 301 Moved Permanently"&#41;;
header&#40;"Location&#58; http&#58;//www.kinder-archiv.de/die-besten-kinderseiten/"&#41;;
header&#40;"Connection&#58; close"&#41;;
exit&#40;&#41;;
&#125;
?>
ganz am Anfang in die index.php einfügen.

dann per .htaccess:

Code: Alles auswählen

RewriteRule ^die-neuesten-kinderseiten/$ /index.php?list=latest
RewriteRule ^die-besten-kinderseiten/$ /index.php?list=top
Wichtig: kein R=301 Flag einfügen, damit intern, nicht extern weitergeleitet wird.

Ist jetzt ungetestet, vielleicht müssen wir da noch den einen oder anderen Fehler gemeinsam raussuchen... (Backslash für Sonderzeichen, etc)
:wink:

ven
PostRank 4
PostRank 4
Beiträge: 137
Registriert: 18.07.2006, 08:58

Beitrag von ven » 18.02.2007, 18:01

Hallo,

der Inhalt ist immer noch in: index.php?list=latest
Ich möchte nur Weiterleiten damit man von den alten SERPS direkt auf die neue umgeschriebene URL kommt.

Ich habe deinen Code mal eingebaut, aber funktioniert leider nicht. Das dürfte aber auch mit dem Script zusammenhängen, denn in dem Sende ich unter TOP z.B. schon einen: header("HTTP/1.1 200 OK");. Weil der sonst einen 404 Error Header für die schon umgeschriebene URL sendet.

Anzeige von ABAKUS

von Anzeige von ABAKUS »

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

chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 18.02.2007, 18:12

Hallo Ven,

einen 404 sollte nur gesendet werden, wenn die .htaccess nicht greift. Demnach müssten wir dort nochmal nach einem Fehler schauen. Beachte dabei, dass die von mir gepostete .htaccess anders aussieht, als vielleicht Deine bisherige Lösung.

Den HTTP/1.1 200 OK Header könntest Du sonst auch in einem

Code: Alles auswählen

else
&#123;
... Dein 200er Header
&#125;
nach den obigen if und else if Konditionen einfügen.


Aber zurück zur .htaccess: hast Du den Code von oben schon ausprobiert? Läuft da was schief, wenn ja, was für eine Fehlermeldung oder Statuscode?

ven
PostRank 4
PostRank 4
Beiträge: 137
Registriert: 18.07.2006, 08:58

Beitrag von ven » 18.02.2007, 18:42

Ich hab den neuen Code in die .htaccess sowie in die index.php eingefügt. Wenn ich jetzt auf:
https://www.kinder-archiv.de//index.php?list=latest
zugreife, ist habe ich die alte URL, aber richtigen Content
https://www.kinder-archiv.de/die-neusten-kinderseiten/
zugreife, habe ich die richtige URL, aber werde auf die Startseite weitergeleitet

Hier mal den Code der Index.php

Code: Alles auswählen

   switch &#40;$_REQUEST&#91;'list'&#93;&#41;
   &#123;
      case 'latest'&#58;
         $links = $db->GetAll &#40;"SELECT * FROM `&#123;$tables&#91;'link'&#93;&#91;'name'&#93;&#125;` WHERE `STATUS` = '2' &#123;$expire_where&#125; ORDER BY `DATE_ADDED` DESC LIMIT 0, ".LINKS_TOP&#41;;
         $path&#91;&#93; = array &#40;'ID' => '0', 'TITLE' => _L&#40;'Die neusten Kinderseiten'&#41;, 'TITLE_URL' => '', 'DESCRIPTION' => ''&#41;;
		 
		 $aufruf = $_SERVER&#91;"REQUEST_URI"&#93;;
		 if&#40;$aufruf == "index.php?list=latest"&#41;
		 &#123;
		 header&#40;"HTTP/1.1 301 Moved Permanently"&#41;;
		 header&#40;"Status&#58; 301 Moved Permanently"&#41;;
		 header&#40;"Location&#58; http&#58;//www.kinder-archiv.de/die-neuesten-kinderseiten/"&#41;;
		 header&#40;"Connection&#58; close"&#41;;
		 exit&#40;&#41;; 
		 &#125; 
		 else &#123;
		 header&#40;"HTTP/1.1 200 OK"&#41;;
		 &#125;
		  
         break;
      case 'top'&#58;
         $links = $db->GetAll &#40;"SELECT * FROM `&#123;$tables&#91;'link'&#93;&#91;'name'&#93;&#125;` WHERE `STATUS` = '2' &#123;$expire_where&#125; ORDER BY `HITS` DESC LIMIT 0, ".LINKS_TOP&#41;;
         $path&#91;&#93; = array &#40;'ID' => '0', 'TITLE' => _L&#40;'Die besten Kinderseiten'&#41;, 'TITLE_URL' => '', 'DESCRIPTION' => ''&#41;;
         
		 $aufruf = $_SERVER&#91;"REQUEST_URI"&#93;;
		 if&#40;$aufruf == "index.php?list=top"&#41;
		 &#123;
		 header&#40;"HTTP/1.1 301 Moved Permanently"&#41;;
		 header&#40;"Status&#58; 301 Moved Permanently"&#41;;
		 header&#40;"Location&#58; http&#58;//www.kinder-archiv.de/die-besten-kinderseiten/"&#41;;
		 header&#40;"Connection&#58; close"&#41;;
		 exit&#40;&#41;;
		 &#125; 
		 else &#123;
		 header&#40;"HTTP/1.1 200 OK"&#41;;
		 &#125;
		 
		 break;
      default&#58;
         http_redirect&#40;DOC_ROOT&#41;;
         break;
   &#125;

chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 18.02.2007, 18:51

Könntest Du nicht den von mir eingebrachten Code direkt vor Deine SWITCH Anweisungen stellen, oder würde die dadurch behindert,? Ich sehe da gerade keine Hinderungsgründe.

Dann würde folgendes passieren: beim Aufruf von index.php?list=latest wäre die if Kondition wahr, damit würde per 301 auf /die-neuesten-kinderseiten/ umgeleitet, diese würde intern (ohne 301 o.ä.) wieder die index.php?list=latest aufrufen. Da dann die if Kondition nicht mehr wahr wäre, würde der nachfolgende Code ausgeführt, da sollte dann also erst die SWITCH ($_REQUEST["list"]); folgen.

ven
PostRank 4
PostRank 4
Beiträge: 137
Registriert: 18.07.2006, 08:58

Beitrag von ven » 18.02.2007, 19:04

Okay, die neuen umgeschriebenen URL's klappen jetzt, die alten leiten aber wenn ich das richtig sehe nicht weiter.
https://www.kinder-archiv.de//index.php?list=latest
https://www.kinder-archiv.de/die-neusten-kinderseiten/

Der PHP-Code:

Code: Alles auswählen

$aufruf = $_SERVER&#91;"REQUEST_URI"&#93;;
if&#40;$aufruf == "index.php?list=latest"&#41;
&#123;
header&#40;"HTTP/1.1 301 Moved Permanently"&#41;;
header&#40;"Status&#58; 301 Moved Permanently"&#41;;
header&#40;"Location&#58; http&#58;//www.kinder-archiv.de/die-neusten-kinderseiten/"&#41;;
header&#40;"Connection&#58; close"&#41;;
exit&#40;&#41;;
&#125;
else if&#40;$aufruf == "index.php?list=top"&#41;
&#123;
header&#40;"HTTP/1.1 301 Moved Permanently"&#41;;
header&#40;"Status&#58; 301 Moved Permanently"&#41;;
header&#40;"Location&#58; http&#58;//www.kinder-archiv.de/die-besten-kinderseiten/"&#41;;
header&#40;"Connection&#58; close"&#41;;
exit&#40;&#41;;
&#125; 
else &#123;
header&#40;"HTTP/1.1 200 OK"&#41;;
&#125;
   
   switch &#40;$_REQUEST&#91;'list'&#93;&#41;
   &#123;
      case 'latest'&#58;
         $links = $db->GetAll &#40;"SELECT * FROM `&#123;$tables&#91;'link'&#93;&#91;'name'&#93;&#125;` WHERE `STATUS` = '2' &#123;$expire_where&#125; ORDER BY `DATE_ADDED` DESC LIMIT 0, ".LINKS_TOP&#41;;
         $path&#91;&#93; = array &#40;'ID' => '0', 'TITLE' => _L&#40;'Die neusten Kinderseiten'&#41;, 'TITLE_URL' => '', 'DESCRIPTION' => ''&#41;;
		 header&#40;"HTTP/1.1 200 OK"&#41;;
         break;
      case 'top'&#58;
         $links = $db->GetAll &#40;"SELECT * FROM `&#123;$tables&#91;'link'&#93;&#91;'name'&#93;&#125;` WHERE `STATUS` = '2' &#123;$expire_where&#125; ORDER BY `HITS` DESC LIMIT 0, ".LINKS_TOP&#41;;
         $path&#91;&#93; = array &#40;'ID' => '0', 'TITLE' => _L&#40;'Die besten Kinderseiten'&#41;, 'TITLE_URL' => '', 'DESCRIPTION' => ''&#41;;
		 header&#40;"HTTP/1.1 200 OK"&#41;;
		 break;
      default&#58;
         http_redirect&#40;DOC_ROOT&#41;;
         break;
   &#125;

kalamaris
PostRank 1
PostRank 1
Beiträge: 2
Registriert: 17.02.2007, 13:34

Beitrag von kalamaris » 18.02.2007, 19:24

Ich hab da mal ne Frage,

wenn ich mit
RedirectPermanent /datei.html /datei-2.html

weiterleite, wie wird das von Google bewertet?

301 oder 302? Wird PR mit vererbt muss da noch was dahinter wie [R=301,L] oder so etwas?

etwas Aufklärung würde mich beruhigen :wink:

mfg kalamaris

chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 18.02.2007, 19:26

Ich wusste doch, dass ich da noch einen kleinen Fehler eingebaut hatte: vor das index.php in den if und else if Konditionen muss noch ein Slash, sonst deckt sich das nicht mit REQUEST_URI:

Da Du aus irgendeinem Grunde auch mit einem leeren Verzeichnis ( //index.php ) aufrufst, habe ich das gleich noch mit reingepackt

So wäre es richtig:

Code: Alles auswählen

$aufruf = $_SERVER&#91;"REQUEST_URI"&#93;;
if&#40;$aufruf == "/index.php?list=latest" || $aufruf == "//index.php?list=latest"&#41;
&#123;
header&#40;"HTTP/1.1 301 Moved Permanently"&#41;;
header&#40;"Status&#58; 301 Moved Permanently"&#41;;
header&#40;"Location&#58; http&#58;//www.kinder-archiv.de/die-neusten-kinderseiten/"&#41;;
header&#40;"Connection&#58; close"&#41;;
exit&#40;&#41;;
&#125;
else if&#40;$aufruf == "/index.php?list=top" || $aufruf == "//index.php?list=top"&#41;
&#123;
header&#40;"HTTP/1.1 301 Moved Permanently"&#41;;
header&#40;"Status&#58; 301 Moved Permanently"&#41;;
header&#40;"Location&#58; http&#58;//www.kinder-archiv.de/die-besten-kinderseiten/"&#41;;
header&#40;"Connection&#58; close"&#41;;
exit&#40;&#41;;
&#125;
else &#123;
header&#40;"HTTP/1.1 200 OK"&#41;;
&#125;
   
   switch &#40;$_REQUEST&#91;'list'&#93;&#41;
   &#123;
      case 'latest'&#58;
         $links = $db->GetAll &#40;"SELECT * FROM `&#123;$tables&#91;'link'&#93;&#91;'name'&#93;&#125;` WHERE `STATUS` = '2' &#123;$expire_where&#125; ORDER BY `DATE_ADDED` DESC LIMIT 0, ".LINKS_TOP&#41;;
         $path&#91;&#93; = array &#40;'ID' => '0', 'TITLE' => _L&#40;'Die neusten Kinderseiten'&#41;, 'TITLE_URL' => '', 'DESCRIPTION' => ''&#41;;
       header&#40;"HTTP/1.1 200 OK"&#41;;
         break;
      case 'top'&#58;
         $links = $db->GetAll &#40;"SELECT * FROM `&#123;$tables&#91;'link'&#93;&#91;'name'&#93;&#125;` WHERE `STATUS` = '2' &#123;$expire_where&#125; ORDER BY `HITS` DESC LIMIT 0, ".LINKS_TOP&#41;;
         $path&#91;&#93; = array &#40;'ID' => '0', 'TITLE' => _L&#40;'Die besten Kinderseiten'&#41;, 'TITLE_URL' => '', 'DESCRIPTION' => ''&#41;;
       header&#40;"HTTP/1.1 200 OK"&#41;;
       break;
      default&#58;
         http_redirect&#40;DOC_ROOT&#41;;
         break;
   &#125;
Zuletzt geändert von chris21 am 18.02.2007, 19:31, insgesamt 1-mal geändert.

chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 18.02.2007, 19:29

@kalamaris: vollkommen falscher Thread, aber um Deine Frage gleich zu beantworten:

"redirect permanent" ist die mod_alias Entsprechung eines R=301 flags über mod_rewrite. Für Google ist es eine permanente Weiterleitung, 301 steht für nichts anderes.

ven
PostRank 4
PostRank 4
Beiträge: 137
Registriert: 18.07.2006, 08:58

Beitrag von ven » 18.02.2007, 19:42

Tatsache, klappt wunderbar. Super vielen Dank chris :)

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag