ПРОЕКТЫ 


  АРХИВ 


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]

Re: дилемма с rewrite expression


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: дилемма с rewrite expression
  • From: Валентин Бартенев <ne@xxxxxxxx>
  • Date: Tue, 26 Jun 2012 15:38:31 +0400
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=vbart.ru; s=mail; h=Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:In-Reply-To:References:Date:Subject:To:From; bh=bTdFMe67rhQRiIp76B6emQUL3pUcl6R2rtbSzqrSt1E=; b=cmylzpT89ofnYrh8QUGNVEZ0iDH89OHCxwYriHvM/dUt/4tI1wid8Eq5M1Xf9Yf/YXSZrxYmmvcn/a2a7SvxP9oZzbXJNOAD9T739zEKMZJHU5mKfI485zZYbe+j15bG4L19S4uWV60s4FWz9Jy3fWANdkMhaqgGjiCLoY78EeUaaz46IBXBIPPGrH05rTuY6RZLWBE5ZUnvcCL4TluiDEH4pzPWdy50Gc0lICy3yCwp3fexB0j8QKPntI4OL1NYq7YWEzOd3S5mAzCKP4WnujMy8HW90FQvs0QqJS/w+FMm789Ka5NGDM9tkvKAq9hfw3weepEmzFaq70Lx0zKJ6g==;
  • In-reply-to: <d2fb7708a732937ad59f9261dd7218a9.NginxMailingListRussian@forum.nginx.org>
  • References: <d2fb7708a732937ad59f9261dd7218a9.NginxMailingListRussian@forum.nginx.org>

On Tuesday 26 June 2012 05:04:31 technoplague wrote:
> Привет,
> 
> В наличии имеется работающий apache
> конфиг:
> 
> =========================================================
> 
> <Directory /data/www/dev/domain.com/cf/htdocs/get>
> Options FollowSymlinks
> RewriteEngine on
> RewriteRule ^([^/\.]+)/([^/]+)$ index.php?contid=$1 [L]
> </Directory>
> 
> =========================================================
> 
> Rewrite срабатывает на ура для след. урла -
> domain.com/get/aa/bb, но не работает в nginx при
> след. конфиге (вываливает 404):
> 
> =========================================================
> upstream cf-domain {
> 
> server unix:/data/www/dev/domain.com/cf/cf-domain.sock;
> }
> 
> 
> server {
> listen 62.236.108.22:80;
> listen 127.0.0.1:28005;
> server_name cfdev.domain.com;
> access_log /data/www/dev/domain.com/cf/logs/frontend/access.log;
> error_log /data/www/dev/domain.com/cf/logs/frontend/error.log;
> 
> charset utf-8;
> 
> location ~ ^/get/ {
> rewrite ^([^/\.]+)/([^/]+)$ index.php?contid=$1 last;
> fastcgi_pass cf-domain;
> }

Как минимум, под ^([^/\.]+)/([^/]+)$ не попадет ни один запрос, ибо всякий
URI начинается с "/", а данная регулярка запрещает слэш первым символом.

> location / {
> root /data/www/dev/domain.com/cf/htdocs;
> index index.php index.html;
> 
> if ($request_uri ~* "\.(ico|css|js|gif|jpe?g|png)$") {
> expires max;
> }
> 
> if (!-f $request_filename) {
> rewrite ^/(.*)$ /index.php?q=$1 last;
> break;
> }
> }
> 
> location ~ (\.php)$ {
> fastcgi_param SCRIPT_FILENAME
> /data/www/dev/domain.com/cf/htdocs$fastcgi_script_name;
> fastcgi_param PATH_INFO $fastcgi_script_name;
> include /etc/nginx/fastcgi_params;
> fastcgi_pass cf-domain;
> }
> 
> error_page 500 502 503 504 /50x.html;
> location = /50x.html {
> root html;
> }
> }
> 
> =========================================================
> 
> 
> Не могу разобраться где здесь проблема
> - с самим выражением или с порядком
> выполнения запроса?
> 

В целом конфиг выглядит страшно и нечитабельно. Изучайте:

 * http://nginx.org/en/docs/http/converting_rewrite_rules.html
 * http://wiki.nginx.org/Pitfalls
 * http://wiki.nginx.org/IfIsEvil

--
Валентин Бартенев
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.