Como criar regras de reescrita no Nginx

As regras de reescrita do NGINX fornecem uma maneira poderosa de modificar e gerenciar solicitações de URL em seu servidor web. Essas regras são essenciais para redirecionar URLs, alterar estruturas de URL e melhorar o SEO. Ao aproveitar as regras de reescrita, você pode garantir que os usuários e mecanismos de pesquisa possam acessar seu conteúdo com eficiência e manter uma estrutura de URL limpa e organizada. Dominar as regras de reescrita permite aprimorar a funcionalidade e a flexibilidade do seu servidor web, proporcionando uma melhor experiência geral do usuário.

Este guia explicará como criar regras de reescrita no NGINX, fornecendo exemplos claros e etapas para ajudá-lo a configurar seu servidor para lidar com modificações de URL de maneira eficaz.

Regras de reescrita NGINX: diretiva de retorno

O NGINX return A diretiva é uma ferramenta poderosa para gerenciar as respostas do servidor. É usado principalmente para redirecionar clientes para URLs diferentes ou para enviar códigos de status específicos. Esta diretiva simplifica o redirecionamento do tráfego, especialmente ao mover ou reestruturar o seu site. É essencial para o SEO e para a manutenção da experiência do usuário durante as transições. Vamos examinar um exemplo único para entender sua aplicação:

Exemplo: suponha que você queira redirecionar usuários de uma página antiga para uma nova. Em seu arquivo de configuração NGINX, você pode usar o return diretiva da seguinte forma:

server {
    listen 80;
    server_name oldsite.com;
    return 301 http://newsite.com$request_uri;
}

Neste exemplo, qualquer solicitação para oldsite.com é redirecionada permanentemente para newsite.com, preservando o URI da solicitação. O código de status 301 indica um redirecionamento permanente, informando aos mecanismos de busca para atualizarem sua indexação.

Regras de reescrita NGINX: diretiva de reescrita

A diretiva de reescrita NGINX é usada para alterar URIs de solicitação de várias maneiras antes do processamento adicional. É mais versátil que a diretiva return, permitindo manipulações complexas de URL com base em condições. Esse recurso é crucial para criar URLs amigáveis ​​para SEO e gerenciar links legados.

Exemplo: imagine que você precisa converter um URL dinâmico em um de aparência estática para melhorar o SEO. Você poderia usar a diretiva rewrite assim:

server {
    listen 80;
    server_name example.com;
    location /products {
        rewrite ^/products/([0-9]+)/([0-9]+)$ /product?id=$1&page=$2 last;
    }
}

Nesse cenário, um URL como example.com/products/123/2 é reescrito internamente para example.com/product?id=123&page=2. O último sinalizador indica que o processo de reescrita deve parar e o novo URI deve ser reavaliado.

Exemplo de regras de reescrita do NGINX

Implementando regras de reescrita HTTPS no NGINX

Garantir conexões seguras via HTTPS é crucial para a segurança dos dados. A diretiva de reescrita NGINX pode redirecionar todo o tráfego HTTP para HTTPS, aumentando a segurança dos dados em trânsito.

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

Neste exemplo, as solicitações HTTP para example.com são redirecionadas para HTTPS, garantindo a comunicação criptografada.

Simplificando URLs: remoção de barras duplicadas nas regras de reescrita do NGINX

Ocasionalmente, os URLs podem conter barras duplicadas, causando confusão ou erros. A diretiva de reescrita do NGINX lida com isso de forma eficiente, convertendo URLs com barras duplas em uma única barra.

server {
    server_name example.com;
    if ($request_uri ~* "\/\/") {
        rewrite ^/(.*)/$ /$1 permanent;
    }
}

Esta regra simplifica os URLs removendo quaisquer barras redundantes.

Redirecionamento de diretório: regras de reescrita do NGINX em ação

Ao reorganizar ou mover recursos, muitas vezes é necessário redirecionar diretórios inteiros de forma eficiente. O NGINX facilita isso por meio de sua regra de reescrita.

location ^~ /old-directory/ {
    rewrite ^/old-directory/(.*)$ /new-directory/$1 permanent;
}

Este comando redireciona todas as solicitações de /diretório-antigo/ para /diretório-novo/.

Manipulação de string de consulta usando regras de reescrita no NGINX

Alterar URLs com base em strings de consulta pode ser particularmente benéfico durante a reformulação do site. As regras de reescrita do NGINX permitem a reestruturação dinâmica de URL com base nesses parâmetros.

if ($args ~ "^id=(.*)&lang=(.*)") {
    set $id $1;
    set $lang $2;
    rewrite ^/page.php$ /page/$lang/$id? permanent;
}

Aqui, a regra de reescrita transforma strings de consulta complexas em URLs mais simplificados.

Garantindo URLs uniformes: barra final nas regras de reescrita do NGINX

A uniformidade na estrutura do URL, como a barra final, pode ser crítica para a consistência do site e para o SEO.

rewrite ^([^.]*[^/])$ $1/ permanent;

Esta regra garante que todos os URLs terminem com uma barra, mantendo um formato padronizado.

Redirecionamento baseado em método: empregando regras de reescrita no NGINX

O NGINX permite redirecionamentos com base em métodos de solicitação específicos, como POST, que podem ser cruciais para lidar com envios de formulários com segurança.

if ($request_method = POST ) {
    return 301 https://example.com$request_uri;
}

Este comando redireciona todas as solicitações POST para uma URL HTTPS.

Protegendo imagens com regras de reescrita NGINX

Proteja os recursos do seu servidor evitando links diretos não autorizados às suas imagens.

location ~ .(gif|png|jpe?g)$ {
    valid_referers none blocked ~.google. ~.bing. ~.yahoo. example.com *.example.com;
    if ($invalid_referer) {
        rewrite ^/images/(.*)$ /stop-hotlinking.$1 last;
    }
}

Esta configuração redireciona solicitações com referenciadores inválidos, bloqueando efetivamente o hotlinking.

Aplicando URLs em minúsculas para consistência

Manter URLs em letras minúsculas em seu site aumenta a consistência e evita confusão.

location ~ [A-Z] {
    rewrite ^(.*)$ $scheme://$host$1 lowercase;
}

Este comando converte quaisquer elementos de URL maiúsculos em minúsculos.

Lidando com alterações na estrutura do URL

Adaptar-se às novas estruturas de URL sem perder tráfego ou prejudicar a experiência do usuário é crucial durante as atualizações do site.

server {
    listen 80;
    server_name example.com;
    
    location ~* ^/oldpath/(.*) {
        rewrite ^/oldpath/(.*)$ /newpath/$1 permanent;
    }
}

Redireciona usuários e mecanismos de pesquisa de URLs antigos para novos.

Criação de URLs limpos para plataformas CMS

Para plataformas CMS que dependem de strings de consulta, as regras de reescrita do NGINX podem criar URLs mais limpos e mais amigáveis ​​para SEO.

location / {
    try_files $uri $uri/ @extensionless-php;
    index index.html index.htm index.php;
}

location ~ \.php$ {
    try_files $uri =404;
}

location @extensionless-php {
    rewrite ^(/[^.]*[^/])$ $1.php last;
}

Essa configuração transforma URLs em um formato mais legível, melhorando potencialmente o desempenho de SEO.

Conclusão

Ao criar e configurar regras de reescrita no NGINX, você pode otimizar o gerenciamento de URL, melhorar o SEO e garantir uma experiência de usuário perfeita. Revise e teste regularmente suas regras de reescrita para garantir que funcionem conforme o esperado e faça os ajustes necessários. Dominar as regras de reescrita do NGINX permite aproveitar todo o poder do NGINX para um servidor web mais dinâmico e responsivo.

Joshua James
Me siga
Últimos posts por Joshua James (exibir todos)

Deixe um comentário