Xpoint
   [напомнить пароль]

nginx, перенаправление для существующего каталога

Метки: [без меток]
2012-12-24 21:55:30 [обр] Филипп Ткачев(7/112)[досье]

Имеется решение, которое делает внутренний редирект при обращении к каталогу.
Выглядит вот так

server {
   ...
   error_page 403 =200 @zmcms;
   location @zmcms {
      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      fastcgi_pass unix:/var/run/php5-fpm.sock;
      fastcgi_index index.php;
      include fastcgi_params;
      fastcgi_param SCRIPT_FILENAME /var/www/site.com/index.php;
      fastcgi_param SCRIPT_NAME     /index.php;
      fastcgi_param QUERY_STRING    rqp=$uri&$args;
   }
}

Решение, что называется, в лоб.
Для чего оно нужно? Обращается человек по адресу site.com/music/, его сервер заворачивает на обработчик site.com/index.php?rqp=/music/. Если происходит обращение к существующему site.com/music/happy.mp3, то в ответ скачиваетcя файл.
Так в чем же проблема? Проблема в управлении заголовками. error_page 403 =200 @zmcms; принудительно меняет HTTP Status Code и потом его нельзя сменить изнутри fastcgi приложения. Дело в том, что иногда внутренняя логика приложения может предусматривать свои коды и применять их по необходимости.
Получает еще и другой отрицательный момент - любой несуществующий адрес превращается в существующий, что тоже плохо.

Powered by POEM™ Engine Copyright © 2002-2005