Soy bastante nuevo en esto y tengo un servidor nginx funcionando en una página web simple. La configuración que tengo puesta sites-available
es:
server {
listen 80 default_server;
root /var/www/mywebsite/;
index /html/index.html;
server_name mywebsite.com www.mywebsite.com;
location / {
try_files $uri $uri/ =404;
}
}
Y mi index.html se encuentra en esta estructura:
+------+ +----------+
+ html +-->+index.html|
+------+ +----------+
|
| +--------------+
+-->+scnd_page.html|
+--------------+
Cuando accedo mywebsite.com
, veo index.html
. ¿Cómo podría hacer mywebsite.com/scnd_page/
para señalar send_page.html
?
He probado algunas cosas creando
location /scnd_page {
}
Pero no estoy seguro de estar en el camino correcto. ¿Se puede hacer esto siquiera en este archivo?
Respuesta1
Podrías usarrewrite
para asegurarse de emitir redirecciones externas, de modo que .html
nunca sean visibles para el usuario, ytry_files
para servir los archivos reales.
location / {
rewrite ^(/.*)\.html$ $1 redirect;
try_files $uri $uri/index.html $uri.html =404;
}
Sin embargo , no recomendaría admitir una barra diagonal /$
para dar a entender \.html$
; la lógica para dicho soporte sería un poco fea, además también causará problemas adicionales si intenta usar URL relativas dentro de dicho archivo scnd_page.html
.
Respuesta2
Puedes simplemente configurar el parámetro de índice dentro del bloque de ubicación:
location /html/scnd_page { index scnd_page.html; }
También puedes definir como índice "secundario" scnd_page.html globalmente:
server {
listen 80 default_server;
root /var/www/mywebsite/;
# carefull setting '/html/index.html'...
index index.html scnd_page.html;
server_name mywebsite.com www.mywebsite.com;
location / {
try_files $uri $uri/ =404;
}
}