Re: Как удалить index.php из url

2019-04-29 Пенетрантность dimademin
Приветствую.
Большое спасибо! Все понял. 
В моем случае работает в таком виде:

if ($request_uri ~ "^(.*/)index.php$"){return 301 $1;}
location / {
try_files $uri $uri/ /index.php?q=$request_uri;
}
location ~ \.php {

}





> Почитайте ещё раз данное сообщение:
> 
> 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-remov
> e-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/
>

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,232265,283970#msg-283970

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Как удалить index.php из url

2019-04-28 Пенетрантность Constantine A. Murenin
Почитайте ещё раз данное сообщение:

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  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

Re: Как удалить index.php из url

2019-04-28 Пенетрантность dimademin
Движок там 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

Re: Как удалить index.php из url

2019-04-28 Пенетрантность Константин Ткаченко
сб, 27 апр. 2019 г. в 17:07, dimademin :

> К сожалению не то, ведь index.php из первоначального запроса никуда не
> исчезнет
> Вся эта схема вообще не работает без /index.php?q=, это отыечает за "чистые
> урлы"
>
>
Перечитал еще раз тему.
У вас похож конфиг на конфиг от друпала 7.
Приведете пример входящей uri и что должно получиться.

-- 
С уважением, Константин!
Web-разработчик Mello .

Best regards,
Constantine
Mello  Web developer.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Как удалить index.php из url

2019-04-27 Пенетрантность dimademin
Попробовал, не помогло, ну результат немного другой, видимо из-за internal
возвращается 404-я

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,232265,283949#msg-283949

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Как удалить index.php из url

2019-04-27 Пенетрантность dimademin
К сожалению не то, ведь index.php из первоначального запроса никуда не
исчезнет
Вся эта схема вообще не работает без /index.php?q=, это отыечает за "чистые
урлы"

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,232265,283948#msg-283948

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Как удалить index.php из url

2019-04-27 Пенетрантность Константин Ткаченко
Попробуйте такой вариант
https://symfony.com/doc/master/setup/web_server_configuration.html#nginx

пт, 26 апр. 2019 г. в 23:45, Kostya Alexandrov via nginx-ru <
nginx-ru@nginx.org>:

> Тгда для location ~ \.php$ {
> http://nginx.org/ru/docs/http/ngx_http_core_module.html#internal
>
> On 26/04/2019 21:47, dimademin wrote:
> > Спасибо. Но это вы привели как раз стандартную настройку, универсальную,
> при
> > которой работают и чистые урлы и урл с index.php и без index.php
> > А мне нужно что-бы при http://bla.tld/index.php, быд 301-й на /, то
> есть на
> > http://bla.tld/ и при этом не ломались чистые урлы, то есть работал этот
> > рерайт  "try_files $uri $uri/ /index.php?$query_string" (ну или аналоги,
> что
> > я выше писал)
> >
> > Posted at Nginx Forum:
> https://forum.nginx.org/read.php?21,232265,283942#msg-283942
> >
> > ___
> > 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



-- 
С уважением, Константин!
Web-разработчик Mello .

Best regards,
Constantine
Mello  Web developer.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Как удалить index.php из url

2019-04-26 Пенетрантность Kostya Alexandrov via nginx-ru

Тгда для location ~ \.php$ {
http://nginx.org/ru/docs/http/ngx_http_core_module.html#internal

On 26/04/2019 21:47, dimademin wrote:

Спасибо. Но это вы привели как раз стандартную настройку, универсальную, при
которой работают и чистые урлы и урл с index.php и без index.php
А мне нужно что-бы при http://bla.tld/index.php, быд 301-й на /, то есть на
http://bla.tld/ и при этом не ломались чистые урлы, то есть работал этот
рерайт  "try_files $uri $uri/ /index.php?$query_string" (ну или аналоги, что
я выше писал)

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,232265,283942#msg-283942

___
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

Re: Как удалить index.php из url

2019-04-26 Пенетрантность Konstantin Tokarev


26.04.2019, 21:47, "dimademin" :
> Спасибо. Но это вы привели как раз стандартную настройку, универсальную, при
> которой работают и чистые урлы и урл с index.php и без index.php
> А мне нужно что-бы при http://bla.tld/index.php, быд 301-й на /, то есть на
> http://bla.tld/ и при этом не ломались чистые урлы, то есть работал этот
> рерайт "try_files $uri $uri/ /index.php?$query_string" (ну или аналоги, что
> я выше писал)

Наверное нужно что-то вроде

https://serverfault.com/questions/254191/how-to-combine-url-rewriting-and-fastcgi-in-nginx/262060#262060

>
> Posted at Nginx Forum: 
> https://forum.nginx.org/read.php?21,232265,283942#msg-283942
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru

-- 
Regards,
Konstantin


___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Как удалить index.php из url

2019-04-26 Пенетрантность dimademin
Спасибо. Но это вы привели как раз стандартную настройку, универсальную, при
которой работают и чистые урлы и урл с index.php и без index.php
А мне нужно что-бы при http://bla.tld/index.php, быд 301-й на /, то есть на
http://bla.tld/ и при этом не ломались чистые урлы, то есть работал этот
рерайт  "try_files $uri $uri/ /index.php?$query_string" (ну или аналоги, что
я выше писал)

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,232265,283942#msg-283942

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Как удалить index.php из url

2019-04-26 Пенетрантность Kostya Alexandrov via nginx-ru

    location / {
    index  index.php index.html index.htm;
    try_files $uri $uri/ /index.php?$query_string;
    }


    location ~ \.php$ {
    postpone_output 0;
    root /var/www;
    try_files $uri =404;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    include fastcgi_params;
    }

On 26/04/2019 17:29, dimademin wrote:

Спасибо за ответ
Попробовал так:

location ~ ^/index.php$ {
 return 301 /;
}
location =/ {
 try_files $uri $uri/ /index.php?q=$request_uri;
}
location / {
 fastcgi_pass ...
...

ничего не изменилось, too many redirects. Может я что-то не так понял и не
то прописал?

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,232265,283935#msg-283935

___
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

Re: Как удалить index.php из url

2019-04-26 Пенетрантность dimademin
Спасибо за ответ
Попробовал так:

location ~ ^/index.php$ {
return 301 /;
}
location =/ {
try_files $uri $uri/ /index.php?q=$request_uri;
}
location / {
fastcgi_pass ...
...

ничего не изменилось, too many redirects. Может я что-то не так понял и не
то прописал?

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,232265,283935#msg-283935

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Как удалить index.php из url

2019-04-26 Пенетрантность Илья Шипицин
location = / {

...
}

location / {
  ...
}

пт, 26 апр. 2019 г. в 02:27, dimademin :

> Приветствую
> На сервере работает nginx+fpm, все как часы, есть такой, не очень
> правильный, кусок конфига:
>
> location / {
> try_files $uri $uri/ @rewrite;
> }
> location @rewrite {
> rewrite ^/(.*)$ /index.php?q=$1;
> }
> location ~ \.php{
> .
> }
>
> Есть банальная задача, удалить index.php из uri, то есть делать что-то
> вроде
> location =/index.php {
> return 301 /;
> }
> Но тогда бесконечный редирект и все ломается.
> Подскажите пожалуйста, сам не догоняю, гугл не сильно помог.
> Спасибо
>
> Posted at Nginx Forum:
> https://forum.nginx.org/read.php?21,283927,283927#msg-283927
>
> ___
> 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

Re: Как удалить index.php из url

2019-04-26 Пенетрантность Constantine A. Murenin
On Thu, 25 Apr 2019 at 16:27, dimademin  wrote:

> Приветствую
> На сервере работает nginx+fpm, все как часы, есть такой, не очень
> правильный, кусок конфига:
>
> location / {
> try_files $uri $uri/ @rewrite;
> }
> location @rewrite {
> rewrite ^/(.*)$ /index.php?q=$1;
> }
> location ~ \.php{
> .
> }
>
> Есть банальная задача, удалить index.php из uri, то есть делать что-то
> вроде
> location =/index.php {
> return 301 /;
> }
> Но тогда бесконечный редирект и все ломается.
> Подскажите пожалуйста, сам не догоняю, гугл не сильно помог.
> Спасибо
>

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

К.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru