RE: Подскажите по rewrite

maxhl на hitline.net.ua maxhl на hitline.net.ua
Пн Дек 21 18:01:23 MSK 2009


Переделал так:

server {
    listen 80;
    server_name test.info;
    access_log /home/logs/t_access.log combined;
    error_log /home/logs/t_error.log debug;
    server_name_in_redirect off;
    root /home/test;
    index index.php index.pl index.cgi index.html index.htm;

    location / {
	try_files      $uri  $uri/  @nedrupal;
    }

    location ~ \.php$ {
	try_files      $uri  @nedrupal;
	fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
	fastcgi_param SCRIPT_NAME $fastcgi_script_name;
	fastcgi_param PATH_INFO $fastcgi_script_name;
	fastcgi_pass unix:/mnt/md0/php-fcgi.sock;
	fastcgi_pass_request_body off;
	client_body_in_file_only clean;
	fastcgi_param	REQUEST_BODY_FILE  $request_body_file;
	fastcgi_param	CONTENT_TYPE	$content_type;
	fastcgi_param	CONTENT_LENGTH	$content_length;
	fastcgi_param	DOCUMENT_ROOT	$document_root;
	fastcgi_param	DOCUMENT_URI	$document_uri;
	fastcgi_param	GATEWAY_INTERFACE	CGI/1.1;
	fastcgi_param	QUERY_STRING	$args;
	fastcgi_param	REMOTE_ADDR		$remote_addr;
	fastcgi_param	REMOTE_PORT		$remote_port;
	fastcgi_param	REQUEST_URI		$request_uri;
	fastcgi_param	REQUEST_METHOD	$request_method;
	fastcgi_param	SERVER_ADDR		$server_addr;
	fastcgi_param	SERVER_NAME		$server_name;
	fastcgi_param	SERVER_PORT		$server_port;
	fastcgi_param	SERVER_PROTOCOL	$server_protocol;
	fastcgi_param	SERVER_SOFTWARE	nginx/$nginx_version;
	fastcgi_param	REDIRECT_STATUS 200;
	fastcgi_index	index.php;
    }

    location @nedrupal {
	fastcgi_param SCRIPT_FILENAME  /home/person51/index.php;
	fastcgi_param SCRIPT_NAME /index.php;
	fastcgi_param PATH_INFO /index.php;
	fastcgi_pass unix:/mnt/md0/php-fcgi.sock;
	fastcgi_pass_request_body off;
	client_body_in_file_only clean;
	fastcgi_param	REQUEST_BODY_FILE		$request_body_file;
	fastcgi_param	CONTENT_TYPE		$content_type;
	fastcgi_param	CONTENT_LENGTH		$content_length;
	fastcgi_param	DOCUMENT_ROOT		$document_root;
	fastcgi_param	DOCUMENT_URI		$document_uri;
	fastcgi_param	GATEWAY_INTERFACE	CGI/1.1;
	fastcgi_param	QUERY_STRING	permalink=$uri&query_str=$args;
	fastcgi_param	REMOTE_ADDR			$remote_addr;
	fastcgi_param	REMOTE_PORT			$remote_port;
	fastcgi_param	REQUEST_URI			$request_uri;
	fastcgi_param	REQUEST_METHOD		$request_method;
	fastcgi_param	SERVER_ADDR			$server_addr;
	fastcgi_param	SERVER_NAME			$server_name;
	fastcgi_param	SERVER_PORT			$server_port;
	fastcgi_param	SERVER_PROTOCOL		$server_protocol;
	fastcgi_param	SERVER_SOFTWARE		nginx/$nginx_version;
	fastcgi_param	REDIRECT_STATUS 200;
	fastcgi_index	index.php;
    }

В результате добился :

$_SERVER["QUERY_STRING"]=permalink=/video-1/Smotret-Kino-Besplatno-7/&query_
str=
$_SERVER["REQUEST_URI"]=/video-1/Smotret-Kino-Besplatno-7/
$_SERVER["SCRIPT_NAME"]=/index.php

Для сравнения в апаче :

$_SERVER["QUERY_STRING"]=permalink=video-1/Smotret-Kino-Besplatno-7/&query_s
tr=
$_SERVER["REQUEST_URI"]=/video-1/Smotret-Kino-Besplatno-7/
$_SERVER["SCRIPT_NAME"]=/index.php

Тоесть есть лишний слеш. Что я делаю не так?


-----Original Message-----
From: maxhl [mailto:maxhl at hitline.net.ua] 
Sent: Thursday, December 03, 2009 3:47 PM
To: nginx-ru at nginx.org
Subject: Подскажите по rewrite


Hello!
Есть набор правил:
____________________________________________________________________________
RewriteCond %{QUERY_STRING} (.*)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?permalink=$1&query_str=%1 [L,QSA]

#feed
RewriteRule ^feed/rss/$ _cache/rss_main.xml [L,QSA]

#sitemap
RewriteRule ^sitemap/$ index.php?page=sitemap [L,QSA]
RewriteRule ^sitemap/([0-9]+)/$ index.php?page=sitemap&spage=$1 [L,QSA]

#contact form
RewriteRule ^contact/$ index.php?page=contact_form [L,QSA]
____________________________________________________________________________

Подскажите как переделать это для nginx. Пробовал так:

location ~ ^.+.php$ {

	#fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
	fastcgi_param  SCRIPT_FILENAME  /home/user/index.php;

	#fastcgi_param SCRIPT_NAME $fastcgi_script_name;
	fastcgi_param  SCRIPT_NAME      /index.php;

	fastcgi_param PATH_INFO $fastcgi_script_name;
	#fastcgi_param PATH_INFO /index.php;

	fastcgi_param  QUERY_STRING     permalink=$uri&$args;
	#permalink=$1&query_str=%1
	fastcgi_pass unix:/mnt/md0/php-fcgi.sock;

	fastcgi_pass_request_body off;
	client_body_in_file_only clean;
	fastcgi_param  REQUEST_BODY_FILE  $request_body_file;
	fastcgi_param   CONTENT_TYPE            $content_type;

	fastcgi_param   CONTENT_LENGTH          $content_length;
	fastcgi_param   DOCUMENT_ROOT           $document_root;
	fastcgi_param   DOCUMENT_URI            $document_uri;
	fastcgi_param   GATEWAY_INTERFACE       CGI/1.1;
	fastcgi_param   REMOTE_ADDR             $remote_addr;
	fastcgi_param   REMOTE_PORT             $remote_port;
	fastcgi_param   REQUEST_URI             $request_uri;
	fastcgi_param   REQUEST_METHOD          $request_method;
	fastcgi_param   SCRIPT_NAME             $request_uri;
	fastcgi_param   SERVER_ADDR             $server_addr;
	fastcgi_param   SERVER_NAME             $server_name;
	fastcgi_param   SERVER_PORT             $server_port;
	fastcgi_param   SERVER_PROTOCOL         $server_protocol;
	fastcgi_param   SERVER_SOFTWARE         nginx/$nginx_version;

	fastcgi_param   REDIRECT_STATUS 200;
	fastcgi_index  index.php;
}

Но вместо сайта вижу исходник пхп ...
____________________________
С уважением Max ICQ 71006063



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




Подробная информация о списке рассылки nginx-ru