Wenn ich eine Variable mit GET übergeben möchte hänge ich diese einfach an die URI an. Nun ist mir aufgefallen dass z.B. bei domain.de?variable=test automatisch die index.php angesprochen wird, auch eigentlich logisch. Kann ich “/index.php” immer gefahrenlos weglassen? Oder gibt es untern den Browsern irgendwelche Problemkinder die das nicht verstehen?
Im Hauptverzeichnis von domain.de gibt es keine index.html oder index.htm
den Schrägstrich nicht unbedingt, aber index.php schon - da es sich dabei um einen Directoryindex handelt, diese Datei also automatisch aufgerufen wird, wenn nichts weiter angegeben wird.
Verwende lieber domain.tld/?var=xyz also mit dem /, damit das ja jeder Browser versteht. Die Dateiauswahl ist Serversache, d.h. das ganze funktioniert so mit jedem Apache, LightHTTPd oder Nginx-Server problemlos.
Das Verhalten hängt davon ab, was für ein web-server installiert
ist und wie der konfiguriert ist.
Meist ist das ein Apache wie hier.
Bei der Angabe einer URI gibt es verschiedene Bestandteile.
Ganz hinten kann etwas hinter einem # stehen, das wird gar
nicht an den server gesendet, sondern vom browser ausgewertet.
Damit ist die Sache dann für einen jeden browser erledigt - was
vor dem # steht, wird als Anfrage zum server geschickt, was
dahintersteht, wird selber ausgwertet.
Davor kann etwas stehen, was mit einen ? beginnt, das ist dann
eine Anfrage an den server.
Bei den davorstehenden Angaben hängt es stark davon ab, was
wie konfiguriert ist.
Verzeichnisse können mit einem abschließenden ‘/’ angegeben
werden, dann spart man dem server die Analyse, ob eine Datei
oder ein Verzeichnis aufgerufen wird.
Wenn das nicht dasteht, kann es sich um ein Verzeichnis oder eine
Datei handeln, kann der server dann selber herausfinden.
Im Falle eines Verzeichnisses kann der Apache so konfiguriert sein,
daß er eine bestimmte Datei aus dem Verzeichnis statt des
Verzeichnisses selbst zurückliefert.
Je weniger du also angibst, umso mehr hat der server zu tun, um
herauszufinden, was mit der Anfrage wirklich gemeint ist.
?was=13
bedeutet also mehr Arbeit für den server als
/?was=13
und das mehr als
/index.php?was=13
Natürlich braucht jede Aktion vom Apachen auch Zeit.
Wenn man ein nicht triviales PHP-Skript aufruft, wird aber
vermutlich die Verarbeitungszeit des Skriptes lang gegenüber
dem Auffinden der gewünschten Datei sein.
So oder so - da der hiesige server ja nicht gerade unterbeschäftigt
ist, kann sich das in der Summe aller Anfragen an den server
schon positiv auswirken, wird aber kein sehr bemerkenswerter
Effekt sein.
Vermutlich lohnt es sich daher eher, die Effektivität des Skriptes
und die Datenmenge der Ausgabe zu optimieren, als immer
darauf zu achten, aus der Art der Anfrage das Letzte
herauszuholen…
Zu dem von mir geschriebenen ergänzend:
Der Kram vor dem # wird natürlich gegebenenfalls vom browser
zu einer absoluten URI/IRI ergänzt.
Das ist dann etwas, was beim browser geringfügige
Verarbeitungszeit kostet, sicher vernachlässigbar gebenüber der
Zeit, die zur Darstellung von dekorierten Dokumenten verbraten
wird. Relative Pfadangaben sind also erstmal nicht der
Ansatzpunkt für Optimierungen von Verarbeitungszeiten.
Strittig ist übrigens die korrekte Umsetzung von base oder
xml:base, wenn nur ein Fragmentidentifizierer samt # ohne
vorherigen relativen Pfad angegeben ist. Die Kombination kann
Unheil anrichten ;o)