php - trabajo - ¿A dónde deben ir los activos en un proyecto de encendido de código?
recuperacion capital de trabajo flujo de caja (6)
Estoy empezando con CodeIgniter, y no estoy seguro de a dónde deberían ir cosas como css, js e imágenes. Fuera, toda la carpeta del sistema parece estar bien, pero eso significa que todo está separado. En el interior significa que los filepaths son más largos, y me preocupa que pueda estropear las cosas. ¿Cuál es la mejor práctica en este tema?
Encuentro que es mejor mantener los activos en el nivel raíz. Puede usar <?=base_url()?>
hacer eco de la raíz completa del sitio. En el archivo de configuración, configura la raíz del sitio web. Esta afirmación simplemente se hace eco de eso.
Debido a esto, puede usar incluye de esta manera:
<link href="<?=base_url()?>/css/style.css" rel="stylesheet" type="text/css" />
en cualquier parte de tu código, y seguirá obteniendo http://example.com/css/style.css .
Normalmente pongo carpetas separadas en el nivel raíz, así que termino con una estructura de directorios como esta:
/system
/css
/js
/img
Parece que funciona para mí: cuando usas site_url(url)
, la URL que genera es de la raíz, por lo que puedes usar site_url(''css/file.css'')
para generar URLs para tus hojas de estilo, etc.
Odio tener tantos directorios en el nivel raíz, así que uso / public y uso htaccess para reescribir / scripts en / public / scripts y demás.
base_url () / css / name.css
Para usar el helper site_url (url) de esta manera, DEBE primero configurar Apache mod_rewrite (o equivalente) para eliminar el segmento index.php del URI.
De lo contrario, el método site_url agrega index.php a la URL que probablemente arruinará las rutas de acceso a sus activos si los tiene en el directorio base como se indica más arriba.
Aquí está la documentación de CodeIgniter sobre la eliminación de index.php del URI:
Personalmente, arranco el directorio de la application
directorio del system
y lo hago un hermano del system
. Luego creo un directorio de proyecto en public_html (www)
donde muevo index.php y almaceno mis activos públicos.
Supongamos que el proyecto en el que estás trabajando se llama projekt
. En el directorio principal de public_html (www)
cree un directorio llamado CISYSTEM
, y dentro de ese directorio cree un directorio a partir de la versión que está utilizando, 202
, 210
, etc.
/CISYSTEM
/202
/210
/another_CI_version
/projekt_application
/models
/views
/controllers
/private_assets
/public_html
/projekt
index.php
.htaccess
css
img
js
lib
La belleza de esta estructura de directorios es que agrega otra capa de seguridad y hace que sea más fácil actualizar / intercambiar su núcleo de CI. Además, no se supone que debas realizar cambios en el núcleo: tener un solo directorio donde se almacena tu núcleo y tener todos los proyectos de referencia lo mantiene seco.
Sin embargo, toda esta reorganización de directorios requiere que reenrute algunas cosas. Afortunadamente, CodeIgniter lo hace fácil: todos los cambios se pueden realizar en el archivo index.php
.
Abra index.php
y redireccione un par de cosas:
Cambio: $system_path = ''system'';
Para: $system_path = ''../../CISYSTEM/210'';
Cambio: $application_folder = ''application'';
Para: $application_folder = ''../../projekt_application'';
Además, veo a mucha gente hablando de usar site_url()
en las otras respuestas. Recomiendo una forma menos detallada de usar site_url()
... no tiene que llamarlo siempre si utiliza el elemento <base>
de HTML:
<base href="<?= site_url();?>">
Simplemente incluya eso en el <head>
su aplicación y puede llamar a sus controladores directamente ... como en:
<a href=''controllername/functionname''>Some Action</a>
Aclamaciones