Pregunta

Me han pedido que averiguar cómo funciona el sistema concrete5 para un empleador, y no puedo encontrar algo mejor.

Tengo Concrete5 instalado en un directorio en el servidor llamado /realprofessionals. Cuando el sistema Concrete5 hace nuevas páginas, que les da sus propias rutas absolutas, por ejemplo:

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

Sin embargo, no ha hecho realmente una carpeta en el directorio llamado /realprofessionals footer. Entonces, ¿cómo funciona eso? ¿Cómo puede http://www.wmcpartners.com/realprofessionals/footer ser un vínculo de trabajo

¿Fue útil?

Solución

Respuesta corta: Todas las solicitudes de páginas en realidad están pasando por el único archivo index.php. contenido de la página se almacena en la base de datos, no en archivos en el servidor.

Respuesta larga: Concrete5 (y más basado en PHP CMS para el caso) el trabajo de esta manera: todas las solicitudes son enviadas a través del archivo index.php. Este enrutamiento se hace cumplir con algunas reglas mod_rewrite en el archivo .htaccess. Las reglas dicen "para cualquier petición, en realidad no ir a esa página, pero en lugar de ir a index.php y pasar el resto de la ruta solicitada como $ _GET parámetros". Luego, en el código de index.php (o algún otro código que se incluye el archivo index.php), la página solicitada se determina con base en el camino que se puso en los parámetros $ _GET por Apache (según la regla mod_rewrite en. htaccess), y el contenido apropiado se recupera de la base de datos.

El almacenamiento de contenidos en la base de datos en lugar de archivos en el servidor tiene varias ventajas. Por ejemplo, se puede volver a utilizar la misma plantilla HTML - encabezado, pie de página, la barra lateral - en cada página, y si cambia la plantilla que se reflejará automáticamente en todas las páginas se utiliza en. Además, hace que sea más fácil para mezclar páginas alrededor y para darles cualquier URL que desee (por ejemplo, no ".php" extensión al final, o / 2010/11 / fecha / / rutas / para / blog / mensajes basados).

La desventaja, por supuesto, es que cada solicitud requiere muchas consultas de bases de datos, pero para la mayoría de los sitios (los que no tienen millones y millones de páginas vistas), la compensación es bien vale la pena (y varios tipos de almacenamiento en caché puede ayudar a reducir el impacto en el rendimiento) .

Otros consejos

La respuesta de Jordan es excelente, me gustaría añadir que es probable que no vea index.php en la url porque se ha habilitado URLs ricas (tipo 'bonita' en el searchbox de concrete5 para comprobar que).

En cualquier caso, la mejor manera de agregar mediante programación enlace a páginas internas es:

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

Funciona tanto en el servidor local y en línea, con o sin URLs bonitas.

(Para la página-go nombre de tablero de instrumentos / mapa del sitio / página completa nombre / propiedades / rutas de página y la ubicación.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top