Seite 1 von 2

Skript Frage / Tote URLs abfangen

Verfasst: 14.07.2005, 01:52
von axelm
Hi,

ich habe ne Seite wo sich Leute mit Adressen eintragen können.
nach dem Schema index.php?ort=Stadtname

jetzt hat Google aber manche URLs mit Umlauten drin falsch aufgenommen bzw. manchmal lösche ich einen Indexierten Eintrag auch mal wieder. Im moment fängt mein Skript das nicht ab und es wird die Seite ohne Content angezeigt, ich möchte aber dass der Bot ein 404 zurück bekommt wenn zu dem Eintrag nix in der DB drin ist.

Ich habe das mal probiert mit
// if($ort== '')
//{
// header('HTTP/1.1 404 File not found');
// header('Location: URL/404.php');
// exit();
// }

leider kommt da nur ein 302 raus.
Wie muss man es denn richtig machen?
Evtl. 301 senden und zur 404 Weiterleiten? Hält der Bot das dann nicht für eine Linkfarm?

Wer sich das mal genauer anschauen will:
https://www.autolackiererei.de/ort/?ort ... C3%BCnster

Verfasst:
von

Skript Frage / Tote URLs abfangen

Verfasst: 14.07.2005, 02:30
von robo
Hmmm ... nur eine Idee, keine Ahnung, ob es funktioniert:

header('Location: URL/404.php'); raus

include ('URL/404.php'); rein

cu, Robo :)

Verfasst: 14.07.2005, 08:29
von Anderl72@work
warum machst du nicht einfach einen rewrite der Umlaute von z.b. "ö" nach "oe" ?

Verfasst:
von

Skript Frage / Tote URLs abfangen

Verfasst: 14.07.2005, 09:12
von auftragslinker
hm..hab mal gelesen, dass header('HTTP/1.1 404 File not found'); nicht immer funzt...
google mal nach header status 404
muss irgendwie
header('Status: 404'); oder so ähnlich heissen

Skript Frage / Tote URLs abfangen

Verfasst: 14.07.2005, 09:13
von axelm
Hi Robo

>include ('URL/404.php'); rein
wird zwar die 404 ausgeben aber dem Bot doch kein 404 im Header senden.
Würde also nichts bringen oder?

>warum machst du nicht einfach einen rewrite der Umlaute von z.b. "ö" nach "oe" ?
Ja, löst aber das Problem nicht wirklich. Anderes Beispiel:
Seite.php?Produkt=12345
wenn das Produkt 12345 aus dem Sortiment genommen habe ich das gleiche Problem.

Hat Jemand eine Idee?

Verfasst: 14.07.2005, 09:54
von Fridaynite

Code: Alles auswählen

ErrorDocument 401 /fehler401.html
ErrorDocument 500 /fehler500.html
ErrorDocument 403 /fehler403.html
ErrorDocument 404 /fehler404.html
einfach eine fehler404.html Seite erstellen und den Code oben in die .htaccess

funzt bei mir gut.

Re: Skript Frage / Tote URLs abfangen

Verfasst: 14.07.2005, 09:57
von robo
axelm hat geschrieben:>include ('URL/404.php'); rein
wird zwar die 404 ausgeben aber dem Bot doch kein 404 im Header senden.
Würde also nichts bringen oder?
Doch, die erste Headeranweisung soll ja bleiben bzw. entsprechend dem Vorschlag von auftragslinker geändert werden.

Überprüfen kannst du das dann mit Mozilla und dem Plugin LiveHTTPHeaders oder einem der zahlreichen Header-Online-Tools.

cu, Robo :)

Skript Frage / Tote URLs abfangen

Verfasst: 14.07.2005, 10:13
von Pompom
Probier es mal mit

header("Status: 404 Not Found");

Skript Frage / Tote URLs abfangen

Verfasst: 14.07.2005, 10:15
von Pompom
Wenn das nicht hilft, hilft es nicht.
Location: URL ist ein Spezieller Fall, bei dem immer ein Status: 302 an den Browser übermittelt wird, wenn nicht vorher ein 3xx-Status gesendet wurde.

Verfasst: 14.07.2005, 10:40
von auftragslinker
@pompom: kommt das ned auf den httpd an? soweit ich weiss, funktioniert location: 404 auf manchen servern...


mfg

auftragslinker

Skript Frage / Tote URLs abfangen

Verfasst: 14.07.2005, 10:56
von Pompom
wenn das location: 404 mit PHP funktioniert, liegt es nicht am Server, sondern am PHP, da dieses den Errorcode generiert. Vielleicht gibt es da einige buggy Versionen, die dies nicht richtig handhaben.

Ist ja irgendwie eine Logik: Wenn ich auf eine Seite mit Location: weiterleite, ist diese schon irgendwie/irgendwo vorhanden, also im Bereich der 300er Errorcodes anzusiedeln.

Skript Frage / Tote URLs abfangen

Verfasst: 14.07.2005, 14:44
von auftragslinker
pompom: mit server mein ich ja php :)
die php.ini wird ja schließlich vom apache verarbeitet...

Skript Frage / Tote URLs abfangen

Verfasst: 14.07.2005, 18:50
von Pompom
- PHP ist kein Server, genausowenig wie php ein Datenbanksystem ist.

- php wird (meist) als Apache Modul geladen und arbeitet mit dem Apache Webserver in der Art zusammen, dass entsprechende Dokumente (*.php) an den Preprozessor bzw. Interpreter PHP weitergereicht werden und dessen Output (der resultierende HTML-Code) an den Browser weitergereicht wird.

- php ist einfach nur eine Scriptsprache, die mit Hilfe eines Interpreters abgearbeitet wird. Der Interpreter ist meist das vom Apache geladene Modul libphp(x).so.

- php.ini wird nicht vom Apache verarbeitet und ist auch nicht für die Zusammenarbeit mit dem Webserver zuständig, sondern einzig und allein für den PHP-Interpreter.

- Wie bei Scriptsprachen üblich, eignen sich diese für kleine bis mittelgroße Projekte. Bezeichnenderweise heißt ja PHP nix anderes als Personal Home Page Tools.

Sorry, etwas Offtopic...

Verfasst: 14.07.2005, 21:34
von axelm
Hi,

also habe jetzt in der PHP Doku gesehen, dass der 404 Header im einen 302 zurückgibt.

Es gibt unterschiedlich Schreibweisen von header("Status: 404 Not Found"); die bringen aber wegen dem 302 alle nichts.

Ich habe mich jetzt für folgende Variante entschieden

if($FooBar == '')
{
header('HTTP/1.1 301 Moved Permanently');
header('Location: URL/404.php');
exit();
}

Da wird halt gesagt, die URL ist verschoben und der Bot landet auf der 404 die selber einen Meta noindex Eintrag enthält.

wget DeadURL -S

Connecting to URL... connected.
HTTP request sent, awaiting response...
1 HTTP/1.1 301 Moved Permanently
2 Date: Thu, 14 Jul 2005 20:27:44 GMT
3 Server: Apache (SuSE/Linux)
4 Location: /404.php
5 Connection: close
6 Content-Type: text/html; charset=iso-8859-1
Location: /404.php [following]
--22:27:51-- /404.php
=> `404.php.3'
Connecting to NewURL... connected.
HTTP request sent, awaiting response...
1 HTTP/1.1 200 OK
2 Date: Thu, 14 Jul 2005 20:27:45 GMT
3 Server: Apache (SuSE/Linux)
4 Connection: close
5 Content-Type: text/html; charset=iso-8859-1

Was meint ihr dazu? Oder verbrenne ich mir damit die Seite?

Verfasst: 15.07.2005, 08:37
von auftragslinker
@pompom: verdammt, das brauchst du mir nicht zu erzählen, ich betreue selber genug linux und debian server.
man muss aber nicht immer alles so detailiert ausdrücken, um zu wissen, was der andere damit meint. wenn ich sage server, dann ist damit die server konfiguration gemeint, die eben alles samt apache (der wohl die php.ini liest und damit das modul füttert, weil ein apachemodul bestandteil des apache ist) und andere inis und confs beinhaltet.


mfg

mark



ps: wenn der apache die php.ini nicht liest, dann änder doch mal was und versuch nen php-neustart ;)