Re: try_files вместо каскада рерайтов

kvt на kvtsoftware.com kvt на kvtsoftware.com
Чт Дек 8 10:54:38 UTC 2016


Валентин, благодарю Вас. Предложенный Вами вариант работает корректно.
Сложность для меня была в том, что в Concrete5 CMS при включенных SEF-ссылках задача была преобразовать с помощью конфига URL вида /something/something2/?param1=value1&param2=value2 к виду /index.php/something/something2/?param1=value1&param2=value, при чем параметров может быть произвольное количество от 0 и до "бесконечности". Ваш вариант работает со всеми вариантами URL'ов.

>>  Здравствуйте уважаемые господа.
>>
>>  Помогите выразить следующую конструкцию:
>>
>>      if (!-f $request_filename){
>>          set $rule_0 1$rule_0;
>>      }
>>      if (!-d $request_filename){
>>          set $rule_0 2$rule_0;
>>      }
>>      if ($rule_0 = "21"){
>>          rewrite ^/(.*)$ /index.php/$1 last;
>>      }
>>
>>  с помощью try_files
>>
>>  Всю голову уже сломал, пробовал делать вот так:
>>
>>      try_files $uri $uri/ /index.php$request_uri /index.php;
>>
>>  все нормально, но на адреса вида /something-page/?param=value выдает 404-ю ошибку.
>>  простите если фигню спросил, не знаю куда обращаться. документацию читал вдоль и поперек.
>
> Вы пытаетесь проверить наличие "/index.php$request_uri" в файловой системе?
>
> Сомневаюсь, что директория /index.php/ вообще существует.
>
> Видимо планировалось написать что-то такое:
>
>    try_files $uri $uri/ /index.php$uri$is_args$args;
>
> Но правильно на самом деле делать так, как изложено в документации
> в примерах с Drupal/Joomla/Wordpress: http://nginx.org/r/try_files/ru


Подробная информация о списке рассылки nginx-ru