NGINX: Cómo redireccionar de img/file.jpg a public/img/file.jpg
Tengo una configuración de Nginx como esta:
server{
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /var/www/all-my-projects;
location / {
try_files $uri $uri/ =404;
autoindex on;
autoindex_localtime on;
autoindex_exact_size off;
}
location ~ .php$ {
fastcgi_pass $php_fastcgi_pass;
fastcgi_index /index.php;
include fastcgi_params;
fastcgi_split_path_info ^(.+?.php)(/.*)$;
try_files $fastcgi_script_name =404;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location /project {
try_files $uri @store-deprecated;
}
location @project {
rewrite /project/(.*)$ /project/public/index.php?url=/$1 last;
}
}
Pero cuando accedo a localhost/project
, las imágenes en el navegador no se cargan en ninguna vista.
Sé que cuando accedo a la carpeta project
, se redirige a project/public/index.php
y se ejecuta el sitio.
He puesto las imágenes en el HTML de la siguiente manera:
<img src="img/image.png">
¿Cómo puedo reescribir la carpeta public/img/
para acceder a todas las imágenes escribiendo localhost/project/img/image.png
?
Lo mismo ocurre con las carpetas css
y js
, y con el archivo favicon.ico
.
davy.ai
Para reescribir la carpeta
public/img/
paralocalhost/project/img/image.png
,css
,js
yfavicon.ico
, agregue los siguientes bloques de ubicación al archivo de configuración de nginx:Ahora puedes acceder a los archivos de imágenes, css, js y favicon.ico escribiendo
localhost/project/img/image.png
,localhost/project/css/styles.css
,localhost/project/js/app.js
ylocalhost/project/favicon.ico
, respectivamente.