Nginx - redireciona todos os URLs para raiz (não mostra a página HTML no URL?)

1

Preciso transformar meu site anterior executando o wordpress em um único site de página. Meu site pode conter apenas uma página de destino e quero que todos os URLs antigos redirecionem para 301 a raiz do meu site.

Eu tenho esse trabalho, mas não exatamente como eu prefiro. Atualmente, tudo está redirecionando para mysite.com/index.html, mas quero direcioná-lo diretamente para o mysite.com.

Este é o código de redirecionamento que estou usando nas minhas tags de localização / {}:

try_files $uri $uri/ /index.php?q=$uri&$args;
            if ( $uri !~ ^/(index\.php|css|images|uploads|js|robots\.txt|favicon\.ico|wp-admin|launch|wp-login\.php|inc) ) {
                    rewrite ^ http://www.mysite.com/index.html permanent;
            }

Esse código redireciona tudo, exceto os diretórios e arquivos específicos que listei. Dessa forma, eu ainda posso acessar meu diretório wp-admin para adicionar conteúdo ao Wordpress, então quando eu puxar o switch mais tarde, eu posso ligar o site novamente e ter todo o conteúdo atualizado e pronto para o lançamento.

Se eu remover o index.html do meu redirecionamento acima, meu site entrará em um loop de redirecionamento. Se eu fizer a regra de reescrita, aponte para /, então meu site também entrará em um loop de redirecionamento.

Alguém pode me ajudar a atualizar esse código para que index.html não mostre a janela do navegador como o URL real? Eu realmente gostaria que o URL real fosse www.mysite.com, e não www.meusite.com/index.html.

EDITAR:

O que eu realmente preciso é especificar o diretório raiz na minha declaração! Mas se eu adicionar | / | ele permite que todos os arquivos e subdiretórios sejam ignorados ... o que significa que minha regra de redirecionamento nunca é chamada.

Posso especificar apenas um diretório raiz e não incluir nenhum dos arquivos ou subdiretórios desse diretório raiz? Desta forma eu posso dizer ao nginx para não redirecionar em / do meu domínio, mas se ele encontrar /index.html ele irá redirecionar para /.

    
por Kris Anderson 11.01.2013 / 21:01

1 resposta

1

Eu vejo duas maneiras:

  • adicione |$ a regexp
  • configure um location = / e execute /index.php em qualquer back-end do PHP que você usar (provavelmente configurando fastcgi_param SCRIPT_FILENAME .../index.php;
por 12.01.2013 / 18:16

Tags