nginx rewrite несуществующего php

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
gimcnuk
проходил мимо
Сообщения: 5
Зарегистрирован: 2013-01-30 14:58:28

nginx rewrite несуществующего php

Непрочитанное сообщение gimcnuk » 2013-10-26 12:58:04

Здравствуйте.

Подскажите как реализовать рерайт для несуществующего пхп.

Правило

Код: Выделить всё

	location /region {
	#	if (!-f $request_filename) {
			rewrite ^/region/(.*)-region.php$ /region/tpl.php?c=$1 last;
	#	}
	}
Обработка php

Код: Выделить всё

	location ~ \.php$ {
		#if (-e $request_filename) {
			fastcgi_pass	unix:/tmp/php.sock;
		#}

		fastcgi_index index.php;
		include	fastcgi_params;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

	}
В данном варианте пытается открывать файлы напрямую без рерайта, соответсвенно 404 ошибка.
Попытки раскомментировать проверки существования файла в разных вариантах тоже результата не дают.

Кк их подружить?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

GhOsT_MZ
лейтенант
Сообщения: 662
Зарегистрирован: 2011-04-25 11:40:35
Контактная информация:

Re: nginx rewrite несуществующего php

Непрочитанное сообщение GhOsT_MZ » 2013-10-26 13:33:01

Тут проблема в приоритете локейшенов.
Локейшн /region имеет приоритет выше нежели ~ \.php$, как у второго используется регулярка.

Код: Выделить всё

rewrite ^/region/(.*)-region.php$ /region/tpl.php?c=$1 last;
После реврайта мы попадаем в этот же локейшн.
Можно извернуться так:
После реврайта сделать try_files $uri @backend
Создать именованный локейшн:

Код: Выделить всё

location @backend {
      #if (-e $request_filename) {
         fastcgi_pass   unix:/tmp/php.sock;
      #}

      fastcgi_index index.php;
      include   fastcgi_params;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

   }
Но не факт что это спасет, так как нужен полный конфиг нгинкса, чтобы понять текущую логику

gimcnuk
проходил мимо
Сообщения: 5
Зарегистрирован: 2013-01-30 14:58:28

Re: nginx rewrite несуществующего php

Непрочитанное сообщение gimcnuk » 2013-10-26 14:23:45

Спасибо.

Но не работает :)

Сделал наоборот, загнал region в именованный.

Код: Выделить всё

	location ~ \.php$ {

		try_files $uri @region;
		
		fastcgi_pass	unix:/tmp/php.sock;
		fastcgi_index index.php;
		include	fastcgi_params;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

	}


	location @region {
			rewrite ^/region/(.*)-region.php$ /region/tpl.php?c=$1 last;
	}

GhOsT_MZ
лейтенант
Сообщения: 662
Зарегистрирован: 2011-04-25 11:40:35
Контактная информация:

Re: nginx rewrite несуществующего php

Непрочитанное сообщение GhOsT_MZ » 2013-10-26 14:27:59

Работает?

gimcnuk
проходил мимо
Сообщения: 5
Зарегистрирован: 2013-01-30 14:58:28

Re: nginx rewrite несуществующего php

Непрочитанное сообщение gimcnuk » 2013-10-26 14:38:44

Да, а что не должно?

GhOsT_MZ
лейтенант
Сообщения: 662
Зарегистрирован: 2011-04-25 11:40:35
Контактная информация:

Re: nginx rewrite несуществующего php

Непрочитанное сообщение GhOsT_MZ » 2013-10-26 14:42:32

Просто любопытствую)