Почитайте ещё раз данное сообщение: https://forum.nginx.org/read.php?21,232265,283930#msg-283930
Проблема решается в nginx элементарнейшим образом: index index.php; if ($request_uri ~ "^(.*/)index.php$") { return 301 $1; } См. https://stackoverflow.com/questions/21687288/nginx-redirect-loop-remove-index-php-from-url/21813759#21813759 Смысл здесь в разнице между внешними и внутренними перенаправлениями. При использовании $uri (например, через location или rewrite), вы ловите внутреннее (служебное) перенаправление на /index.php при внешнем запросе на /, и выдаёте внешнее перенаправление опять на /, тогда как клиент и так уже запрашивал /. Для правильной работы нужно использовать не $uri, а $request_uri, и перенаправлять исключительно внешние запросы /index.php. http://nginx.org/r/$uri/ru http://nginx.org/r/$request_uri/ru К. http://cm.su/ On Sun, 28 Apr 2019 at 04:57, dimademin <nginx-fo...@forum.nginx.org> wrote: > Движок там MODx, связка nginx + php-fpm, схематично конфиг такой > > location / { > try_files $uri $uri/ @rewrite; > } > location @rewrite { > rewrite ^/(.*)$ /index.php?q=$1; > } > location ~ \.php { > ...... > тут настроено кэширование отдельных страниц сайта > } > ну и дальше там еще второстепенные location, статика, закрытые урлы и пр. > > обычные урлы разделов, товаров и какие-то доп. типа урл на сортировки > выглядят примерно так > http://dom.com/cat1/ > http://dom.com/tovar_blabla/ > http://dom.com/tovar_blabla/?color=red > > С приведенным куском конфига все работает. СЕОшники возжелали склеить > корень > "/" и "/index.php", то есть что-бы: > http://dom.com/index.php редиректило(301) на http://dom.com/ > > Уже не первый день экспериментирую, перепробовал кучу всего и подозреваю > что > силами только nginx, это может не получится, как раз по причине > использования php-fpm. Все попытки это в конфиге nginx приводят к рекурсии. > > > На виртуалке поднял аналогичный конфиг только nginx + apache, через > htaccess > это делается без проблем: > > RewriteBase / > RewriteCond /index.php [NC] > RewriteRule ^(.*)index\.php$ $1 [R=301,L] > > Видимо конкретно в моем случае, в роли htaccess, должен выступить скрипт, > то > есть этот рерайт наверное нужно делать там. > Ну у меня просто идеи уже кончились и свои и не свои, может вы свежим > взглядом что-нить подскажете :) > > Вот как-то так, вроде ничего не забыл. > Спасибо > > Posted at Nginx Forum: > https://forum.nginx.org/read.php?21,232265,283965#msg-283965 > > _______________________________________________ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru
_______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru