ПРОЕКТЫ 


  АРХИВ 


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 engine


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: Rewrite engine
  • From: Sergey Shepelev <temotor@xxxxxxxxx>
  • Date: Fri, 20 Aug 2010 14:05:19 +0400
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=x/Aje9/EettFWc7WDkiiQn/bsvqvRTPBEeZKGxmY93g=; b=qDccdHyJgi8yALVscCm2Z3K6G4+9PbxY1PIDWIvF+Z8kIzaqY0EByLPvO7LiVlplOo iCK3fgTCYpWJKOX8Ed2DVRnGT6cHwqlM7q6ySe9Fvap+U/1DxJAlcegMTUAKXpAGPKwW fPBbAp8PPRvB/UKWcXJEuLXrB6bq45wgPqa+U=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=LmWJdGnccB549gf4N5XteMheMAwl2ylJ7dakx5JUtRAuaDQoXhzISd2Ug2FwpLzJSK YT7gXO9laHEOLtNjEQi0aayI963RjvUygFKJHgSFWjmGlGjFzFwNS+87sxIQ1Jp7Syn3 rV6wTD9N57VwffDDQ3yK8clFxQ719jkjEKR2w=
  • In-reply-to: <a3a6ba1357230b729485a95dfc2abae8.NginxMailingListRussian@xxxxxxxxxxxxxxx>
  • References: <a3a6ba1357230b729485a95dfc2abae8.NginxMailingListRussian@xxxxxxxxxxxxxxx>

2010/8/20 Grohotun <nginx-forum@xxxxxxxx>:
> Всем добрый день!
> Переношу одну систему на nginx + fastcgi c
> апача.
> В системе стоит такой .htaccess:
>
> AddDefaultCharset UTF-8
> DirectoryIndex index.php
>
> RewriteEngine on
> RewriteCond %{REQUEST_FILENAME} !-f
> RewriteCond %{REQUEST_FILENAME} !-d
> RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
>
>
> по идее он должен всё передавать с
> index.php?auth/login на index.php/auth/login
> Но не хочет.
> Конф хоста:
> server {
> listen 80;
> server_name stat.*********.ru;
> access_log /var/log/nginx/access.log;
> error_log /var/log/nginx/error.log debug;
>
> location / {
>        root /var/www/lider;
>        index index.php;
>        rewrite_log on;
>
>        if (!-f $request_filename){
>                set $rule_0 1$rule_0;
>        }
>        if (!-d $request_filename){
>                set $rule_0 2$rule_0;
>        }
>        if ($rule_0 = "21"){
>                rewrite ^/(.php)$ /index.php?/$1 last;
>        }
>
> }
> location ~ \.php$ {
>        root /var/www/lider;
>        fastcgi_pass 127.0.0.1:9000;
>        fastcgi_index index.php;
>        fastcgi_param SCRIPT_FILENAME
> /var/www/lider$fastcgi_script_name;
>        include fastcgi_params;
>        }
> }
>
> Соответсвенно в логих пишется:
> 2010/08/20 11:02:58 [notice] 16433#0: *1 "^/(.*)$" matches
> "/index.php/auth/login", client: 77.241.**.**, server: stat.*******.ru,
> request: "GET /index.php/auth/login HTTP/1.1", host:
> "stat.**********.ru"
> 2010/08/20 11:02:58 [notice] 16433#0: *1 rewritten data: "/index.php",
> args: "/index.php/auth/login", client: 77.241.***.***, server:
> stat.*******ru, request: "GET /index.php/auth/login HTTP/1.1", host:
> "stat.********.ru"
>
>
> Не поможете?
>

Во-первых: rewrite не работает с Query аргументами (всё что после ? в
урле). Вам именно /index.php?foobar надо обрабатывать особым образом?
Или что во что нужно переписывать?


Во-вторых: нельзя использовать if.

location / {
  root /var/www/lider;
  index index.php;
  rewrite_log on;

  try_files $uri $uri/ /index.php;  # если я правильно понял, что
index.php это единственный PHP скрипт
}

location = /index.php {
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_param SCRIPT_FILENAME /var/www/lider/index.php;

# такой вариант, если   /index.php?foobar  нужно отправлять в PHP как
 /index.php/foobar
  fastcgi_param PATH_INFO $query_string;

  include fastcgi_params;
}
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.