Dennis: URL ermitteln

Beitrag lesen

Hi Norbert,

http://www.example.org/demo/index.htm
http://www.example.org/demo/index.html
http://www.example.org/demo/index.php
... (welche Varianten kommen sonst noch häufig vor?)

Auf Linux-Servern auch häufig: index.cgi, index.php3, .php4, .php5, index.pl, index.xhtml, index.xml
Auf Windows-Servern mit IIS meist: Default.htm, Default.html, Default.aspx, etc.

Bei der Verwendung von Content-Negotiation heißen die Dateien dann z.B. index.de.html, index.en.html, index.html.de, index.html.en, natürlich auch in jeder anderen Dateiendung und/oder Sprache denkbar.
Der Apache sendet in manchen Fällen einen Header "Content-Location" mit dem Dateinamen, gehen z.B. mal auf http://httpd.apache.org/docs/2.2/ und schau dir die Response-Headers an. Allerdings finde ich gerade nicht die Konfigurationsdirektive mit der man das beeinflussen kann - beim DirectoryIndex jedenfalls scheint der Apache besagten Header nicht zu senden.

Zusammengefasst: Es gibt unendlich viele Möglichkeiten, was der Webserver dir ausliefern kann und in manchen Fällen wie z.B. bei einem Directory Listing muss ja gar nicht mal eine Datei dahinter stecken, wie du bereits selber erkannt hast. Realistisch gesehen hast du also keine Chance herauszufinden ob und welche Datei dahinter steckt.

Hintergrund: Es soll ein Seiteninhalt per PHP/curl eingelesen werden. Bei Verwendung einer URL ohne Angabe einer Datei ist das Ergebnis aber eine Fehlerseite.

Ich glaube vielmehr, dass du in deinem PHP-Programm irgendwo einen Fehler hast. Wenn du eine Seite mit curl abrufst, solltest du theoretisch dasselbe Ergebnis erhalten, wie wenn du die Seite mit einerm Browser abrufst.

Eventuell hat der Betreiber der Seite, welche du abrufen willst Curl als User-Agent blockiert und du erhältst deshalb eine Fehlerseite. Das lässt sich aber durch Manipulation des User-Agent Strings problemlos umgehen - dafür müsstest du uns aber etwas mehr über dein PHP-Programm bzw. die abzurufende Seite sagen.

Viele Grüße,
  ~ Dennis.