Конфигурация Nginx с маршрутизацией sf2

0

Я хочу настроить сервер nginx, чтобы я мог использовать app.php или app_dev.php в моих ссылках. Прямо сейчас без них, просто:

www.foobar.com/controller/method/param1/param2

Он загружает app.php по умолчанию. То же самое происходит, когда я добавляю app.php в качестве префикса, но когда я добавляю app_dev.php следующим образом:

www.foobar.com/app_dev.php/controller/method/param1/param2

Я получаю сообщение об ошибке, что маршрут не найден. Поэтому он рассматривает app_dev.php как контроллер. Почему это так? Как я могу его изменить?

Файл конфигурации:

location /foobar/ {
   index app_dev.php app.php
   if (!-e $request_filename)
   {
      rewrite ^/(.*)$ /foobar/(app|app_dev).php?$1 last;
   }
   try_files $uri $uri/ app.php app_dev.php;
}
  • 0
    Я мог бы отразить, что изменения, внесенные в dev, не заполняются в среде prod. app.php работает с кэшированным контентом.
Теги:
nginx

1 ответ

1

просто используйте эту конфигурацию ниже. это работа как с app_dev.php, так и без нее.

location / {
        # try to serve file directly, fallback to app.php
        try_files $uri /app.php$is_args$args;
    }
    # DEV
    # This rule should only be placed on your development environment
    # In production, don't include this and don't deploy app_dev.php or config.php
    location ~ ^/(app_dev|config)\.php(/|$) {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param HTTPS off;
    }
    # PROD
    location ~ ^/app\.php(/|$) {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param HTTPS off;
        # Prevents URIs that include the front controller. This will 404:
        # http://domain.tld/app.php/some-path
        # Remove the internal directive to allow URIs like this
        internal;
    }

В зависимости от вашей конфигурации PHP-FPM, fastcgi_pass также может быть fastcgi_pass 127.0.0.1:9000.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню