• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Seite auf 404-Error prüfen

joomsch

Neues Mitglied
Hallo Leute,

ich bastle gerade an einem Script, mit welchem eine URL verändert wird und wieder ausgegeben.
In 90% der Fälle existiert die Seite welche durch die veränderte URL ausgegeben wird.
In den anderen 10% erscheint eine 404 Error Seite.
Damit der Besucher erst gar nicht auf die Seite kommen kann wenn eine 404 Error Seite hinter der veränderten Seite steckt, wollte ich eine kleine Überprüfung einbauen.
Meine Idee:
mit file_get_contents die veränderte Seite aufrufen und mit preg_match auf 404 untersuchen..
Gerne könnt ihr mir sagen was ich falsch mache, bin noch blutiger Anfänger.
VIelen Dank schonmal.
Hier mein Code:
PHP:
    <?php
                            $url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . "";


                            $zerlegen = explode("/", $url);
                            $next = end($zerlegen) + 1;
                            array_pop($zerlegen);
                            $urlnext = "" . implode("/", $zerlegen) . "/" . $next . "";
                            $urlcheck = file_get_contents($urlnext);
                            $suchmuster = '/^404/';
                            if (preg_match($suchmuster, $urlcheck)){
                                echo " Hier gehts nicht weiter!";
                            }
                            else {
                            echo "<a style='color:white;' href='$urlnext' class='button'>Weiter</a>";
                            }
                            ?>
 
Nur um das nochmal richtig zu formulieren:
Du hast in deiner Webseite URLs die eigentlich zu keiner Seite führen, z.B. http://www.example.com/abcdef. Einige dieser URLs sind URLs von Inhalten die noch existieren, aber nun unter einer anderen URL zu finden sind, z.B. http://www.example.com/abcdef_neu. Nun willst Du gerne beim Aufruf durch den Besucher eine Weiterleitung auf diese eigentlich neue URL durchführen ODER den aktuellen Inhalt unter der alten URL anzeigen. Verstehe ich das richtig?

Wenn ja, dann würde ich dir raten eher eine Weiterleitung einzurichten als die Inhalt zu laden. Die alten URLs sollten schließlich irgendwann auch aus den Suchmaschinen verschwinden, und nicht dauerhaft auffindbar sein. Aus dem Grund solltest Du einen HTTP-Status 301 mit einer Weiterleitung auf die neue URL ausgeben.
 
Erstmal danke für deine Antwort.
Im Prinzip habe ich eine Kategorie mit sehr vielen Bildern.
Der Link zu diesen Bildern ist z.B. folgende URL : example.com/5689
Hiervon gibt es in einer Kategore z.B. von 5689-6000 alle URLs.
Jetzt habe ich auf dieser Seite mit URL example.com/5689 einen "weiter Button",
welches bei klick die Seite example.com/5690 aufruft.
Soweit so gut so lange es noch Bilder gibt.
Wenn ich jetzt aber so oft weiter geklickt habe bis die URL 6000 erreicht ist,
und 6001 nicht mehr existiert, der Benutzer nochmals auf weiter klickt, bekommt der Benutzer eine 404 Error Page.

Diesbezüglich bräuchte ich eben diese Abfrage welche die darauffolgende URL prüft,
und falls es eine error Page ist der weiter Button nicht mehr erscheint..

Ich hoffe das war verständlich :)
 
Damit der Besucher erst gar nicht auf die Seite kommen kann wenn eine 404 Error Seite hinter der veränderten Seite steckt, wollte ich eine kleine Überprüfung einbauen.
Meine Idee:
mit file_get_contents die veränderte Seite aufrufen und mit preg_match auf 404 untersuchen..

Ich selber mache ja mehr mit Rails und JavaScript, und andere hier stecken wesentlich tiefer in PHP. Aber so wie ich das sehe, wäre ein Unit Test der richtige Ansatz. Der Test sollte einen GET-Request ausführen und als Response 200 erwarten.

Mein erster Weg würde mich da zu PHPUnit führen.
 
Ich würde statt der Ursache eher das Problem bekämpfen. Es kann ja Grundsätzlich schonmal nicht korrekt sein, wenn auf eine 404 Seite verlinkt wird (Egal obs hintenrum abgefangen wird oder nicht)
 
Danke schonmal für die Antwort.
Das Problem ist einfach dass man nie weiß wie viele Bilder in einer Kategorie sind.
Somit kann man lediglich erfahren wenn alle Bilder durch sind,
indem man die darauffolgende Seite prüft ob noch ein Bild existiert, oder ob die Folgeseite eben eine 404 Seite ist..
 
Zurück
Oben