Isso pode ou não funcionar, dependendo de quão "inteligente" o Opencart a montante pensa que é.
A ideia é, de acordo com o link , para emitir redirecionamentos somente se index.php
aparecer na solicitação original do usuário (em $request_uri
), mas não se estiver presente apenas como parte do roteamento interno (em $uri
). Por exemplo, pode parecer que o snippet abaixo resultaria em um loop, mas não deveria.
rewrite ^/([a-z]+/[a-z]+)$ /index.php?route=$1 last;
if ($request_uri ~ ^/index.php?route=([a-z]+/[a-z]+)$) { return 301 /$1; }
Como alternativa, se o processamento através de try_files
já conseguir capturar 404
e redirecioná-lo para Opencart (por exemplo, se URLs sem a parte index.php?route=
já funcionarem como você pretende), tudo o que você precisa é o seguinte:
if ($request_uri ~ ^/index.php?route=(.*)$) { return 301 $1; }