ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Реврайты


  • To: nginx-ru@xxxxxxxxx
  • Subject: Реврайты
  • From: Sergiy Kukunin <sergey.kukunin@xxxxxxxxx>
  • Date: Wed, 3 Feb 2010 02:18:12 +0200
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type; bh=YlCaiEkSItbhHgdfgPip3+aKEtYSyyPO2ha4ablPu7c=; b=ugpLgeyzlr+pRFY4PeSDD/PN1+7LQk9B9aICLVTkU1/EhPBulAZ9npkgX1KFq83kvC EsQOJJhOoFXyQog8IKP80I2D5Y0y4ANGpMHn/XSyi7jC4/vlGvwrvNSluGorGGxyxx4u rMbdMBg9L7auLjjBUXI6s2A//QBeQqy1kg0GE=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=qVqMtfMy4gYi+DqH2WkrzvXnDyj19+mrfFp3xCuSzRtv+lcJdrKyOCcs7ZKUdIyFvF 3XCM0SVh861hd6RuT8txUCezPJG/miMD4USiE5U3oNNeRquJH65cQWAlU3uU5iwBx8hT uoxKZ3XAmlY1kU5bnkccQGxfThcHBaRKjquRI=

Добрый день. Есть сайт на друпале. Отличается от тривиального случая тем, что он в подпапке drupal. Для него прописан rewrite.
Всего используется два location'а:

location /drupal {
                if (!-e $request_filename) {
                        rewrite  ^/drupal(.*)  /drupal/index.php?q=$1 last;
                }
        }

location ~ \.php$ {
                fastcgi_pass   unix:/var/run/php-fpm/php.socket;
                fastcgi_index  index.php;
                include        /etc/nginx/fastcgi_params;
        }

Все работает замечательно. Но, недавно заметил интересное поведение: 
Если URI заканчивается на .php ( запрашивается php файл, пусть даже несуществующий ), nginx вернет мне 404 ошибку с текстом от fastcgi: No input file specified. 
Полез читать документацию про location. Ищутся сначала простые location'ы, потом с регулярными выражениями. Если найден с регуляркой - выполняем. Если нет - найболее подходящий location без регулярки. Понимаем, что URI заканчивается на .php - тогда сразу скрипт передается на исполнение, и имел он ввиду первый location. Ладно. Делаем так, чтобы приоритетней был первый location. 
  Заменяем location /drupal на location ~ /drupal ( делая из него регулярное выражение ). Однако, с таким положением, хоть и реврайты срабатывают, возвращается текст php. Т.е., после нахождения нужного location'а, и применение rewrite'а, дальше поиск не идет. 
  Можно подумать, что идет зацикленность. После применение rewrite'а nginx все равно попадает в первый location. Но, в документации сказано, что таких переходов может быть до 10 штук. После этого nginx возвращает 500 ошибку. Так что, незнаю, почему такое поведение.



_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.