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