Tengo un sitio de WordPress corriendo en Nginx. En mi configuración, tengo un bloque de ubicación como este:
location / {
try_files $uri $uri/ /index.php?$args;
}
Lo que quiero hacer es tener un directorio especial lleno de contenido estático. Si una URL coincide con un archivo en el directorio estático, quiero que se sirva en lugar del contenido de Wordpress.
No sabré los nombres de los archivos antes de tiempo.
He intentado cambiar mi bloque de ubicación a
location / {
try_files /static/$uri /static/$uri/ $uri $uri/ /index.php?$args;
}
Esto principalmente hace lo que quiero (siempre y cuando static
es un directorio bajo $document_root
), pero reescribe la url que ve el visitante. Me gustaría evitar eso si es posible. Por ejemplo, evitar https://example.com/catalog.php
redirigiendo a https://example.com/static/catalog.php
. Solo quiero que Nginx sirva el contenido desde estático sin que el visitante lo sepa.
Puede que no haya sido especialmente claro.
Mi contenido de WordPress se encuentra en /srv/www/mysite/html
y mi configuración de Nginx es aproximadamente así:
server {
root /srv/www/mysite/html;
location / {
try_files $uri $uri/ /index.php?$args;
}
}
Tengo otra carpeta, /home/dave/static
, con contenido arbitrario en ella. Digamos que tiene un archivo llamado catalog.html
. Si un visitante visita https://example.com/catalog.html
, Quiero el contenido de /home/dave/static/catalog.html
servido Si no hay un archivo estático coincidente, quiero retroceder al contenido de WordPress.
Aquí hay algo más que he intentado mientras tanto:
server {
root /srv/www/mysite/html;
location / {
root /home/dave/static;
try_files $uri $uri/ @fallback;
}
location @fallback {
try_files $uri $uri/ /index.php?$args;
}
}
Esta configuración no funciona. No parece reconocer ningún contenido estático y solo sirve contenido de WordPress.
/
s en el lugar equivocado Tratar: try_files /static$uri $uri $uri/ /index.php?$args;
static
estaba mal. Desafortunadamente, esta configuración aún redirige físicamente al visitante al directorio / static en lugar de simplemente servir contenido desde allí.
location /static { stuff here; }
y luego tulocation / { stuff here; }