Grundlegendes zu URLs in Apache auf Mac

1

Ausführen von Apache auf Mac Snow Leopard (dh Webfreigabe aktiviert).

Pfade werden auf eine Weise ausgewertet, die nicht erwartet wird:
example.com/folder gibt eine Datei (ohne Ausnahme) anstelle eines Ordners zurück.

Wenn ich example.com/events/March aufrufe und eine Datei events.php in meinem Stammverzeichnis habe, gibt Apache diese Seite zurück und der Rest des Pfads wird ignoriert.

Außerdem hat dieser Aufruf Vorrang vor den Befehlen in .htaccess

z.B. Ich benötige example.com/events/March , um zu example.com/events.php?month=March umzuleiten.
Apache gibt example.com/events.php ohne das erforderliche Argument zurück.

RewriteEngine on
RewriteRule ^events/(.+)/?$ events.php?month=$1

Wenn die events.php nicht existiert (sagen wir, sie heißt eventsHandler.php), funktioniert die obige rewriteRule wunderbar. Ich weiß also, dass es kein Problem mit dem .htaccess gibt

Ich habe versucht, Dateierweiterungen sichtbar zu machen, es hat nicht geholfen.

Die Fragen sind also:

  1. Warum löscht Apache auf Mac die Dateierweiterung und behandelt die Datei als Ordner?
  2. Warum wird dies durch die .htaccess-Datei nicht außer Kraft gesetzt?
  3. Wie behebe ich das, dass es nur funktionieren soll?
SamGoody
quelle

Antworten:

0

Unter MacOS ist ein Schrägstrich ("/") ein gültiges Zeichen zur Verwendung in Dateinamen und kein Pfadbegrenzer. Verwenden Sie stattdessen einen Doppelpunkt als Pfadbegrenzer.

Stellen Sie außerdem sicher, dass Sie Ihre Pfade in dem Code testen, von dem Sie abhängig sind, da gelegentlich Code auftritt, der versucht, Pfade nach dem Erkennen des Betriebssystems automatisch zu konvertieren. In den Novell NetWare-Tagen sind wir auf solche Probleme gestoßen (nicht bei NetWare, das mehrere Dateisystem-Namenskonventionen auf einem einzelnen Volume durch Hinzufügen eines so genannten "Namespace" auf der Serverseite unterstützt hat, sondern bei Tools von Drittanbietern und Bibliotheken, die manchmal Verwirrung stiften können).

Pascal Cuoq
quelle