adiciona um caminho de sufixo de URL (para AMP móvel) sem causar um loop de redirecionamento no nginx

1

Eu estou usando o servidor web nginx para o meu site wordpress. Eu vou fazer isso para se tornar uma versão de amp para o serviço móvel.

eu quero adicionar / amp / ao meu URL. Eu também estou usando permalink bonito para o meu URL atual, então eu posso saber como eu posso reescrever meu URL na versão móvel para / amp /

Estou usando o reescrito ^ link $ request_uri / amp / break; mas quando eu sirvo a web, torna-se isso

exmaple.com/homepage//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp//amp/

Eu desejo que, quando o iPhone atender a página da Web, o link seja link

o objetivo principal eu só quero adicionar / amp / a qualquer link do site.

este é o meu nginx.conf

server {
listen       80;
server_name  example.com;
charset utf-8;
access_log  logs/xxx.access.log;

root   /var/www/html;


index index.php;

location / {
    try_files $uri $uri/ /index.php?q=$uri;
}

location /en {
    try_files $uri $uri/ /en/index.php?q=$uri;
}

location /my {
    try_files $uri $uri/ /my/index.php?q=$uri;
}

set $mobile_rewrite do_not_perform;
if ($http_user_agent ~* "  (android|bb\d+|meego).+mobile|ip(hone|od) {
set $mobile_rewrite perform;
}


## redirect to AMP ##
if ($mobile_rewrite = perform) {
rewrite ^ http://example.com$request_uri/amp/ break;

break;

}

Obrigado

    
por JohnsonGoey 11.06.2016 / 08:08

1 resposta

0

Parece que você tem um loop de redirecionamento, porque você continua adicionando /amp/ no final do seu URL de solicitação.

Talvez você deva ter uma diretiva de reconfiguração condicional (ou duas!) em vez de um caractere curinga.

-rewrite ^ http://example.com$request_uri/amp/ break;
+rewrite ^(.*(?<!/amp))/$ http://example.com$1/amp/ break;
+rewrite ^.*(?<!/amp/)$ http://example.com$uri/amp/ break;

O texto acima garante que o rewrite só aconteça se o seu URL ainda não terminar em /amp/ (usando as declarações de aparência de PCRE , que é a biblioteca que O NGINX está sendo usado para o suporte das expressões regulares ) ; Além disso, ele também deve cuidar do duplo // que estava aparecendo originalmente no seu esquema.

    
por 03.07.2016 / 05:32