Frage

Ich habe gefragt worden, wie ein Arbeitgeber die Concrete5 System funktioniert, um herauszufinden, und ich kann nicht verstehen, etwas aus.

Ich habe Concrete5 in ein Verzeichnis auf dem Server namens /realprofessionals installiert. Wenn das Concrete5 System neue Seiten macht es ihnen, ihre eigenen absoluten Pfade, zum Beispiel gibt:

http://www.wmcpartners.com/realprofessionals/footer

Allerdings hat es nicht gemacht tatsächlich einen Ordner im /realprofessionals Verzeichnis namens footer. Also, wie funktioniert das? Wie kann http://www.wmcpartners.com/realprofessionals/footer sein ein Arbeits Link?

War es hilfreich?

Lösung

Kurze Antwort: Alle Seitenanforderungen werden tatsächlich durch die eine und einzige Datei index.php. Seiteninhalt wird in der Datenbank, nicht in Dateien auf dem Server gespeichert.

Lange Antwort: Concrete5 (und am meisten PHP-basierten CMS für diese Angelegenheit) Arbeit wie folgt: alle Anfragen durch die Datei index.php weitergeleitet werden. Dieses Routing ist mit einigen mod_rewrite Regeln in der .htaccess-Datei erzwungen. Die Regeln sagen, „für jede Anforderung, gehen Sie nicht wirklich zu dieser Seite, sondern auf index.php gehen und den Rest des angeforderten Pfades wie $ _GET Parameter übergeben“. Dann in dem index.php Code (oder einen anderen Code, der von der index.php Datei enthalten ist), wird die angeforderte Seite auf dem Weg bestimmt basierend, die in die $ _GET Parameter von Apache gesetzt wurden (gemäß der mod_rewrite Regel in. htaccess) und die entsprechenden Inhalte aus der Datenbank abgerufen werden.

Speichern von Inhalten in der Datenbank im Gegensatz zu Dateien auf dem Server hat mehrere Vorteile. Zum Beispiel können Sie die gleiche HTML-Vorlage wiederverwenden - Header, Footer, Seitenleiste - auf jeder Seite, und wenn Sie die Vorlage ändern wird es automatisch auf allen Seiten reflektiert es auf verwendet wird. Außerdem macht es leichte Seiten mischen um und ihnen zu geben, was URL Sie wollen (zB keine Erweiterung „.php“ am Ende, oder / 2010/11 / Datum / Basis / Wege / für / Blog / Veröffentlichungen).

Der Nachteil ist natürlich, dass jede Anfrage viele Datenbankabfragen erfordert, aber für die meisten Websites (die ohne Myriaden von Seitenaufrufen), der Trade-off ist es wert (und verschiedene Arten von Caching können die Leistungseinbußen zu reduzieren) .

Andere Tipps

Jordan Antwort ist ausgezeichnet, ich möchte hinzufügen, dass Sie wahrscheinlich in der URL nicht sehen index.php weil Sie aktiviert haben ziemlich URLs (Typ 'pretty' auf concrete5 searchbox, dass zu überprüfen).

Wie auch immer, der beste Weg, um programmatisch Link zu internen Seiten hinzuzufügen ist:

<a href="<?=$this->url('page-name');?>"> 
    page name 
</a>

Es funktioniert sowohl auf localhost und online, mit oder ohne ziemlich URLs.

(Für die Seitennamen unterwegs Armaturenbrett / Voll Sitemap / page-namen / Eigenschaften / Seite Pfade und Lage.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top