Use o sub_filter em URLs diferentes que servem a mesma página html

1

Estou tentando descobrir o fato de que o SPA (ou seja, páginas renderizadas por javascript) não pode servir os metadados do Twitter e os metadados precisam fazer parte da página html do servidor. Existem muitas soluções adequadas para este problema, como renderização do lado do servidor, mas eu estou procurando uma maneira mais rápida, pois eu quero isso para uma página servida por apenas três URLs diferentes.

O que eu quero alcançar é:

  • link = > serve index.html normalmente (index.html possui as tags do cabeçalho meta codificadas)

  • o link serve index.html, mas com as metatags substituídas pelo uso de sub_filter com a palavra "aceitar"

  • link serve index.html mas com metatags substituídas pelo uso de sub_filter com a palavra rejeitar

Eu tentei usar locais diferentes, como:

location / {
  try_files $uri /index.html;
}

location /accept {
  sub_filter 'normal'  'accept';
  sub_filter_once off;
  try_files $uri /index.html;
}

Mas eu recebo o index.html com as meta tags normais. Se eu mover o sub_filter no / location, a substituição de strings funcionará.

Também experimentei reescrever, se estiver dentro do local, etc., mas não consegui fazê-lo funcionar.

    
por masimplo 08.10.2017 / 11:41

1 resposta

1

O elemento final da instrução try_files procura outro location para processar a solicitação de /index.html , e é por isso que ele não é processado no mesmo bloco location .

Você pode usar uma alias diretiva ou um rewrite...break para continuar processando dentro do mesmo bloco de localização.

location /accept {
    default_type text/html;
    alias /path/to/index.html;

    sub_filter 'normal'  'accept';
    sub_filter_once off;
}

Ou:

location /accept {
    rewrite ^ /index.html break;

    sub_filter 'normal'  'accept';
    sub_filter_once off;
}
    
por 08.10.2017 / 15:03