Nginx: reescreva a subpasta para root e mantenha links antigos do WordPress válidos

1

Estou lutando com o NginX reescreve e redireciona, mas com apenas metade do sucesso. Gostaria de receber alguma ajuda.

Situação:

O cliente tem 4 domínios, que eles querem apontar para todos na mesma instalação do Wordpress. Ok, eu encontrei o bom Plugin WP (Múltiplo Domínio) para conseguir isso.

A instalação anterior do WP estava dentro da pasta / wp /, que eu tive que migrar para o root para que o plugin Multiple Domains funcionasse.

Então eu tive que adicionar opções NginX para lidar com a subpasta anterior / wp / por dois motivos:

  • SEO e índices do Google, todos ainda apontam para URLs / wp /, que estariam mortos sem reescrever
  • O criador de Web sites codificou alguns links para imagens e algumas outras coisas com o / wp / incluído no URL, por isso, a reescrita abaixo também trata desse problema

Agora o ALL BELWO funciona, e a melhor parte é que o URL mantém o domínio como foi inserido (não redireciona para o domínio principal):

domainA.com

domainB.com/?cat=7 - > domainB.com/news

domainC.com/wp/something - > domainC.com/something

location ^~ /wp/(.+) { rewrite ^/wp/(.+)$ $1 last; }

Problema? Sim, tudo está funcionando bem, EXCETO quando / wp / é chamado sem parâmetros:

domainA.com/wp - > 404

domainB.com/wp - > 404

...

Eu também tentei (.*) , mas não ajudei. Idéias?

EDITAR Como está configurado agora, todos os 4 domínios funcionam bem e bem com / wp / no meio da string de URL, assim:

domain.com/wp/news - > domain.com/news (isso é ótimo!)

O único problema persiste, quando o / wp está no final:

domain.com/wp - > domain.com/wp (NÃO reescreve / redireciona, o que não é ok)

EDITADO MAIS QUESTÃO CLARA

Eu poderia simplesmente pedir a regra de reescrita do NginX, que incluiria todos esses locais:

domain.com/ wp / alguma coisa
domain.com/wp/wp-config
domain.com/wp/?cat=7
domain.com/wp/
domain.com/ wp

... mas NÃO incluiria arquivos wp *:

domain.com/wp-config

Isso funciona, mas não abrange / wp e / wp / alone, sem parâmetros:

location ^~ /wp/(.+) {
 rewrite ^/wp/(.+)$ $1 last;
}
    
por Labsy 27.09.2018 / 17:25

1 resposta

1

Seu regex manda a barra final após /wp estar presente para corresponder, mas você diz que não quer isso.

location ^~ /wp/(.+) {
     rewrite ^/wp/(.+)$ $1 last;
}

Portanto, apenas torne a barra final opcional. Para esse assunto você realmente não precisa do location ; você pode simplesmente colocar o rewrite diretamente no bloco server apropriado.

rewrite ^/wp(/.+)? $1 last;
    
por 27.09.2018 / 21:06