Как заставить работать ЧПУ в Nginx через php-fpm?

Добрый день. Есть проект - https://github.com/vladimir-s/personal-maps. Написан на Yii, автор преобразовывает внутренние ссылки по следующему правилу:
'urlManager'=>array(	'urlFormat'=>'path',
			'rules'=>array(
                // REST patterns
                array('places/list', 'pattern'=>'api/places', 'verb'=>'GET'),
...
                // regular patterns
                '<controller:\w+>/<id:\d+>'=>'<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
                '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
			),
            'showScriptName'=>false,
		),

Под Apache2 всё работает, но вот как обрабатывать такие URL (в секции REST) через nginx мне всё ещё не понятно.
Пробовал с таким конфигом:
server {
        listen 80;
        root /var/www/tyvik/personal_maps/public_html;
        index index.html index.php;
        server_name personal_maps.tyvik.ru;

        location / {
                try_files $uri $uri/ /index.php?r=$request_uri;
        }

        error_page 404 /404.html;

        location ~ \.php$ {
                fastcgi_pass unix:/var/run/php5-fpm.www.sock;
                fastcgi_index index.php;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param PATH_INFO $fastcgi_script_name;
                access_log off;
        }
}

Заработало всё, кроме REST, валится на запросе personal_maps.tyvik.ru/api/places, говорит 404.
Подскажите, как объяснить nginx чего я хочу?
  • Вопрос задан
  • 11089 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
причем тут yii? задача apache или в вашем случае nginx - перенаправить ВСЕ запросы на index.php. Далее yii уже разберет исходный урл. Так что проблема с конфигом или же с передачей параметров в fpm.

проблема в теории в этой строчке:
try_files $uri $uri/ /index.php?r=$request_uri;

запрос надо перенаправлять на /index.php/$request_uri

Есть же миллион примеров настройки всего этого под nginx. даже в документации
www.yiiframework.com/doc/guide/1.1/ru/quickstart.a...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы