Nginx reescrever / loja / qualquer coisa para / shop

1

Estamos usando uma loja de comércio eletrônico incorporada em nosso site, que funciona adicionando o script JS necessário à página /shop . No lado do servidor, o requisito agora é que todas as URLs do esquema /shop/anything sejam reescritas para /shop para o servidor, porque o restante da parte deve ser processado pelo armazenamento JS incorporado.

Eu não consigo escrever isso e estou recebendo rewrite or internal redirection cycle while processing "/shop . Eu acho que tem a ver apenas com expressões regulares, mas eu pareço ser sem noção.

Minhas configurações são as seguintes:

server {
    listen 8002 default_server;
    listen [::]:8002 default_server;

    location / { 
        root /home/mysite;
        rewrite ^/shop/.+$ /shop;
        index index.php;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        try_files $uri $uri/ /index.php?$query_string;
        set $path_info $fastcgi_path_info;
        fastcgi_param PATH_INFO $path_info;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    } 
}

Eu também tentei rewrite ^/shop/.*$ /shop; , mas o resultado é o mesmo. : |

Normalmente, todas as URLs estão sendo processadas pelo arquivo index.php em /home/mysite (que é realmente o script de entrada para uma estrutura), mas eu preciso das URLs após /shop não serem processadas pela estrutura PHP, mas pelo JS incorporado em /shop .

Qual é a maneira correta de fazer isso?

== Atualizar ==

Por acaso falei com um dos desenvolvedores de suporte do ECWID. Embora eles não tenham nenhum exemplo do Nginx, eles conseguiram fornecer um fragmento do Apache. Espero que ajude:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /~makfruit/shop/
    RewriteRule ^([^\.]+)$ .
</IfModule>
    
por dotslash 26.01.2017 / 11:59

2 respostas

0

Consegui fazê-lo funcionar no nível do framework. Tudo o que fiz foi enviar URLs correspondentes a /shop/anything para a mesma função do controlador que manipula /shop . Não sei por que a reescrita do Nginx não funcionou. Estou aceitando isso como uma resposta para fechar este tópico.

    
por 29.01.2017 / 06:28
0

Uma causa possível para o ciclo de redirecionamento é que você está perdendo o argumento break em sua regra de reescrita. Então, sua linha rewrite deve ficar assim:

rewrite ^/shop/.+$ /shop break;
    
por 26.01.2017 / 21:12

Tags