Почитайте ещё раз данное сообщение:

https://forum.nginx.org/read.php?21,232265,283930#msg-283930

Проблема решается в nginx элементарнейшим образом:

index   index.php;
if ($request_uri ~ "^(.*/)index.php$") {    return  301 $1; }


Смысл здесь в разнице между внешними и внутренними перенаправлениями.  При использовании $uri (например, через location или rewrite), вы ловите внутреннее (служебное) перенаправление на /index.php при внешнем запросе на /, и выдаёте внешнее перенаправление опять на /, тогда как клиент и так уже запрашивал /.  Для правильной работы нужно использовать не $uri, а $request_uri, и перенаправлять исключительно внешние запросы /index.php.


К.

On Sun, 28 Apr 2019 at 04:57, dimademin <nginx-forum@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