2010-12-31 6 views
0

Ich habe kürzlich etwas codiert, bei dem nicht bekannt war, ob der Endcode in einer Subdomain (http://user.domain.com/) oder in einer Subdomain liegen würde (http://domain.com/user), und mir ging es um die beste Vorgehensweise für diese unbekannten Szenarien. Ich konnte denkt an ein Paar:Bewährte Methode, um Code für Domains, Subdomains oder Directores portierbar zu machen

  1. Verwenden absolute Pfade (/css/styles.css) und modrewrite wenn es
  2. eine Einstellungsdatei hat sein/user endet und eine Variable mit dem Pfad erklären (<? php echo $domain . "/css/styles" ?>)
  3. Verwenden Sie relative Pfade (../css/styles.css).

Was ist der beste Weg, damit umzugehen?

Antwort

1

Wenn es irgendeine Frage darüber gibt, wo etwas bereitgestellt werden könnte, würde ich absolute Pfade möglichst vermeiden, und wenn Sie sie verwenden müssen, stellen Sie sicher, sie mit den Daten in der Superglobal $_SERVER zu erstellen. Der Wert $_SERVER['PHP_SELF'] wird den Pfad und Dateinamen der aktuell ausgeführten Skripts enthalten, und Sie können dann den Pfad so etwas mit extrahieren:

$path = dirname($_SERVER['PHP_SELF']); 

Ebenso wird der Wert $_SERVER['HTTP_HOST'] den aktuellen Host enthalten, und aus diesen beiden zusammen Sie kann den Weg dahin aufbauen, wo auch immer Sie sind. Wenn Sie HTTPS verwenden, müssen Sie möglicherweise auch das Protokoll in $_SERVER['HTTPS'] überprüfen.

Mit diesem gesagt, ist es immer noch am besten relative Pfade und eine einfache Datei-und Verzeichnisstruktur wann immer möglich zu verwenden, da es alles portabler und einfacher zu lesen macht. Wenn Sie, wie in Ihrem Beispiel, eine Menge von ../css/styles.css tun, dann sollten Sie vielleicht überdenken, wie die Dinge strukturiert sind.

1

Mischung aus 2 und 3. Verwenden Sie Pfade relativ zu einer festgelegten Variablen.

Verwandte Themen