montez
Goto Top

Aufruf eines "Pfades" unterhalb einer PHP-Datei

Moin moin,

ich hoffe Ihr könnt mir bei folgender Problemstellung helfen:

Folgende Konstellation:

Mein Testsystem ist derzeit ein Windows 7 mit XAMPP in Version 3.2.2 . Allerdings verhält sich der Apache unter Linux genau so.

Documentroot ist "C:/xampp/htdocs". Hier gibt es jetzt ein Verzeichnis "Projekt1" und dort liegt liegt eine Datei "index.php".

Rufe ich die URL "127.0.0.1/Projekt1" oder auch "127.0.0.1/Projekt1/index.php" auf erhalte ich die erwartete Seite.

Wenn ich jetzt aber "127.0.0.1/Projekt1/index.php/irgendwas" aufrufe, erhalte ich den Inhalt der index.php aber ohne jegliches CSS.

Wieso liefert er mir hier nicht einen 404?
Wie behandelt der Apache diese URL? Hat hier jemand eine verständliche Erklärung zur funktionsweise?


Gruß in die Runde!

Content-ID: 296972

Url: https://administrator.de/contentid/296972

Ausgedruckt am: 22.11.2024 um 11:11 Uhr

StefanKittel
Lösung StefanKittel 22.02.2016, aktualisiert am 23.02.2016 um 09:34:08 Uhr
Goto Top
Hallo,

ich kann das so bestätigen.
Scheinbar interpretiert der apache hier den parameter als "ausführen in". Damit findet er alle Dateien mit relativen Pfad nicht mehr.

Stefan
eisbein
Lösung eisbein 22.02.2016, aktualisiert am 23.02.2016 um 09:34:10 Uhr
Goto Top
Hallo!

Das lässt sich unterbinden, wenn man die Base-Url im Head richtig anwendet face-wink

Beispiel: base-Elemente in HTML
<head>
  <base href="http://wiki.selfhtml.org">  
</head>

Beispiel: base-Elemente in xHTML
<head>
  <base href="http://wiki.selfhtml.org" />  
</head>


Die Interpretation liegt hier nicht beim Apache, sondern beim Browser. Mit der Base-Url hat der Browser immer einen Anhaltspunkt für seine relativen Links.

Gruß
Eisbein
montez
montez 23.02.2016 um 09:34:01 Uhr
Goto Top
Hallo,

kurzes Feedback hierzu. Wenn ich die Angabe im Head meiner Datei mache findet der Browser die CSS-Datei tatsächlich wieder und stylt die Seite entsprechende richtig. Der Hinweis war gut, Problem gelöst - Danke!

Die Frage wieso der Apache die index.php ausliefert obwohl ein "/" doch eigentlich in ein tieferes Verzeichnis wechseln lässt, stellt sich mir trotzdem.
Da es ein Verzeichnis unterhalb von index.php ja aber nicht gibt, weil dies ja bereits eine Datei ist würde ich einen Fehler vermuten.
Falls jemand dazu eine Erklärung weiß?!

Gruß

Zitat von @eisbein:

Hallo!

Das lässt sich unterbinden, wenn man die Base-Url im Head richtig anwendet face-wink

Beispiel: base-Elemente in HTML
> <head>
>   <base href="http://wiki.selfhtml.org">  
> </head>
> 

Beispiel: base-Elemente in xHTML
> <head>
>   <base href="http://wiki.selfhtml.org" ></base>  
> </head>
> 

Die Interpretation liegt hier nicht beim Apache, sondern beim Browser. Mit der Base-Url hat der Browser immer einen Anhaltspunkt für seine relativen Links.

Gruß
Eisbein
eisbein
eisbein 23.02.2016 um 12:38:57 Uhr
Goto Top
Mahlzeit!

Was mir noch einfällt ist mod_rewrite.

Bei "127.0.0.1/Projekt1/index.php/irgendwas", wird "irgenwas" als Ordner angesehen, da keine Datei-Endung vorhanden ist.

Mit der RewriteEngine des Apache-Webservers ist es möglich die angeforderte URL anhand von Regeln "umzuschreiben". Basierend auf einem Parser für Reguläre Ausdrücke kann die angeforderte URL manipuliert werden.
Kann sein, dass für diesen Fall eine Standard-Regel existiert.

Gruß
Eisbein