Obtenha o Nginx para sempre exibir o índice

2

Como posso obter o nginx para sempre veicular index.html, independentemente do URL?

Por exemplo, eu quero que o URL https://www.example.me/723738 sempre veicule https://www.example.me/index.html

Eu não quero usar um redirecionamento, porque o usuário ainda deve ter o URL original digitado em sua barra de endereço.

Estou mudando a configuração do Nginx para redirecionar os 404's para index.html, mas não acho que seja uma ótima maneira de fazer isso, porque ele retornará uma resposta 404.

No futuro, talvez eu queira que o index.html exiba a URL original acessada pelo usuário. Existe uma maneira de fazer isso?

Obrigado

    
por Cherona 14.04.2017 / 10:44

3 respostas

1

Resposta à pergunta 1:

A função que você está procurando é chamada de reescrita de URL. Isso permite criar máscaras (ou URLs "falsas") que mostram recursos localizados em URLs diferentes.

No Nginx, isso é obtido pelo comando rewrite <regexp-pattern> <target-url> no arquivo de configuração. Aqui está a configuração do Nginx para o domínio www.example.com:

server {
    listen 80;
    server_name www.example.com;

    root /var/www/example.com;
    index index.html;

    rewrite ^.*$ /index.html;
}

A parte <regexp-pattern> (EXPRESSÃO REGULAR) é comparada com a URL que você digitou no navegador - se a correspondência for bem-sucedida, o recurso em <target-url> será exibido.

Resposta à pergunta 2:

O URL atual não pode ser mostrado apenas com documento HTML puro. Você precisará usar linguagem de script do lado do servidor - por exemplo, PHP. Isso permitirá que você exiba conteúdo dinâmico para o usuário. Existe uma fonte inesgotável de guias sobre PHP com Nginx ( link ) e sobre o tópico de como exibir a URL atual do PHP ( link ).

    
por 14.04.2017 / 11:15
3

O padrão comum usa try_files com um URI padrão. Para um exemplo minimalista:

server {
    root /path/to/root;
    location / {
        try_files $uri $uri/ /index.html;
    }
}

Veja este documento para saber mais.

    
por 14.04.2017 / 11:13
0

Este é o código que você está procurando

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /var/www/;
index index.html;

location = /favicon.ico { access_log off; log_not_found off; }

error_page 404 =200 /;
}

Com server_name _; ele ouve de qualquer domínio ip.

    
por 14.04.2017 / 13:16

Tags