Назад | Перейти на главную страницу

nginx, если директива перестала работать после обновления с 0.7 до 1.0.2

Я обновил свой сервер nginx с 0.7.x до 1.0.2 и скопировал старый файл конфигурации для нового сервера nginx. Все работало нормально, кроме директивы if. У меня был следующий блок кода в старом файле конфигурации, который, похоже, не работает с последней версией nginx.

location /myapp {
         if (!-e $request_filename) {
                rewrite  ^/myapp/(.*)$  /myapp/index.php?q=$1  last;
                break;
          }
          root /var/www;
          index index.php index.html index.htm;
 }

Есть идеи, что случилось?

P.S .: Да я знаю IfIsEvil и я попытался изучить try_files, но я не мог понять, как передать только часть URI ПОСЛЕ myapp / в отличие от передачи входящего URI в index.php следующим образом: try_files $uri index.php?q=$uri

Вы хотите перенаправить все запросы на общий фронт-контроллер.

location / {
    index index.php;
    try_files $uri $uri/ @handler; ## If missing pass the URI to front handler
}

location @handler {
    rewrite / /index.php;
    # Rewrite for @ErJab:
    # rewrite ^/myapp/(.*)$  /myapp/index\.php?q=$1  last;
}

location ~ .php$ { ## Execute PHP scripts 
    fastcgi_pass   127.0.0.1:9000;
}