Это баг или фича? и как это можно победить без использовани if ?
maxhl на hitline.net.ua
maxhl на hitline.net.ua
Чт Дек 24 21:58:56 MSK 2009
Вечер добрый. Спрашиваю еще раз потому чо в первый раз сообщения видимо
недошли.
Есть набор правил .htaccess:
____________________________________________________________________________
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]
____________________________________________________________________________
Примеры из руководства неработают.
Сделал так:
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
Почему в nginx $uri содержит самый первый символ слеш а в апаче нет? Для
скриптов скомпиленных ioncube это оказалось смертельно ...
Как сделать так чтоб его небыло ?
____________________________
С уважением Max ICQ 71006063
Подробная информация о списке рассылки nginx-ru