Domanda

Mi è stato chiesto di capire come funziona il sistema Concrete5 per un datore di lavoro, e non posso capire qualcosa.

Ho Concrete5 installato in una directory sul server chiamato /realprofessionals. Quando il sistema Concrete5 rende nuove pagine, dà loro i propri percorsi assoluti, per esempio:

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

Tuttavia, non è in realtà fatto una cartella nella directory /realprofessionals chiamato footer. Quindi, come fa quel lavoro? Come può http://www.wmcpartners.com/realprofessionals/footer essere un collegamento di funzionamento?

È stato utile?

Soluzione

Risposta breve: Tutte le richieste di pagine sono in realtà sta attraversando l'unico e solo file index.php. contenuto della pagina viene memorizzata nel database, non nel file sul server.

Risposta lunga: Concrete5 (e la maggior parte basata su PHP CMS è per questo) il lavoro in questo modo: tutte le richieste vengono instradate tramite il file index.php. Questo percorso viene applicata con alcune regole mod_rewrite nel file .htaccess. Le regole dicono "per qualsiasi richiesta, in realtà non andare a quella pagina, ma invece andare a index.php e passare il resto del percorso richiesto da $ _GET parametri". Poi nel codice index.php (o qualche altro codice che viene incluso dal file index.php), la pagina richiesta è determinato sulla base del percorso che è stato messo nei parametri di $ _GET da Apache (come da regola mod_rewrite in. htaccess), e il contenuto appropriato viene recuperato dal database.

Memorizzazione contenuti nel database in contrasto con i file sul server ha diversi vantaggi. Ad esempio, è possibile ri-utilizzare lo stesso modello HTML - intestazione, piè di pagina, la barra laterale - in ogni pagina, e se si cambia il modello verrà automaticamente riflessa in tutte le pagine è utilizzato su. Inoltre, rende più facile per mescolare le pagine in giro e per dare loro tutto ciò URL che si desidera (ad esempio non ".php" estensione alla fine, o / 2010/11 / data / basate / percorsi / per / blog / post).

Lo svantaggio, naturalmente, è che ogni richiesta richiede molte query di database, ma per la maggior parte dei siti (quelli senza un'infinità di pagine viste), il trade-off è valsa la pena (e vari tipi di caching può contribuire a ridurre il calo di prestazioni) .

Altri suggerimenti

La risposta di Jordan è eccellente, vorrei aggiungere che probabilmente non si vede index.php nell'URL perché hai attivato gli URL (tipo 'abbastanza' su searchbox di concrete5 per controllare che).

In ogni caso, il modo migliore per programmazione aggiungere link a pagine interne è:

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

Funziona sia su localhost e on-line, con o senza gli URL.

(Per la pagina-nome vai a cruscotto / completa mappa del sito / pagina-nome / proprietà / percorsi pagina e posizione).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top