Rewrite rules

Sergey Kobzar sergey.kobzar на itcraft.org
Вс Мар 20 18:12:53 MSK 2011


Прочитал, но не понял в чем проблема. У меня и так
fastcgi_param	SCRIPT_FILENAME	$document_root$fastcgi_script_name;
fastcgi_param 	SCRIPT_NAME	$fastcgi_script_name;

Сейчас при обhащении к /backend.php вываливается часть php кода plain text.

On 03/18/11 11:38, Anton Koldaev wrote:
> Рекомендую почитать тут:
> http://kbeezie.com/view/php-self-path-nginx/
>
> 2011/3/18 Sergey Kobzar<sergey.kobzar at itcraft.org>:
>> Появилась другая проблема - если url выглядит в виде /backend.php/login, то
>> его нужно передавать на /backend.php, а не на /index.php.
>>
>> Расписал вот так, но все равно не работает - возвращает 404 ошибку:
>>
>> server {
>>         listen 80;
>>         server_name test.localhost;
>>
>>         access_log /var/log/nginx/test.localhost_access.log main;
>>         error_log /var/log/nginx/test.localhost_error.log info;
>>
>>         root /home/www/test/htdocs/web;
>>
>>         rewrite ^/css/[0-9]+/(.*?)$ /css/$1;
>>         rewrite ^/js/[0-9]+/(.*?)$ /js/$1;
>>
>>         location /backend.php {
>>                 if (!-e $request_filename) {
>>                         rewrite ^/(.*) /backend.php?q=$uri;
>>                 }
>>         }
>>
>>         if (!-e $request_filename) {
>>                 rewrite ^/(.*) /index.php?q=$uri;
>>         }
>>
>>         include /etc/nginx/fastcgi.inc;
>>         }
>>
>> # cat ./fastcgi.inc
>> location ~ \.php$ {
>>         fastcgi_pass    127.0.0.1:9000;
>>         fastcgi_index   index.php;
>>         fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
>>         include         /etc/nginx/fastcgi_params;
>> }
>>
>>
>> Спасибо.
>>
>>
>> On 03/18/11 00:46, Sergey Kobzar wrote:
>>>
>>> :)
>>>
>>> Исходные реврайты:
>>> RewriteRule ^css/[0-9]+/(.*?)$ /css/$1 [L]
>>> RewriteRule ^js/[0-9]+/(.*?)$ /js/$1 [L]
>>>
>>> # we check if the .html version is here (caching)
>>> RewriteRule ^$ index.html [QSA]
>>> RewriteRule ^([^.]+)$ $1.html [QSA]
>>> RewriteCond %{REQUEST_FILENAME} !-f
>>> - эти я выкинул, т.к. не уверен что они вообще используются
>>>
>>> # no, so we redirect to our front web controller
>>> RewriteRule ^(.*)$ index.php [QSA,L]
>>>
>>>
>>> У меня получилось вот так:
>>> rewrite ^/css/[0-9]+/(.*?)$ /css/$1;
>>> rewrite ^/js/[0-9]+/(.*?)$ /js/$1;
>>>
>>> if (!-e $request_filename) {
>>> rewrite ^/(.*) /index.php?q=$uri;
>>> }
>>>
>>> Вроде бы работает, но на некоторых страницах нет картинок. Возможно
>>> программеры недоделали - завтра буду разбираться.
>>>
>>> P.S. Наск. я понял используется framework symfony - отсюда все ноги
>>> растут.
>>>
>>>
>>> On 03/16/11 01:27, Vitaly Tskhovrebov wrote:
>>>>
>>>> Где же примеры Ваших попыток? А мы исправим.
>>>>
>>>> On 3/16/2011 1:44 AM, Sergey Kobzar wrote:
>>>>>
>>>>> Добрый вечер.
>>>>>
>>>>> Никак не могу переписать следующие Apache rewrite rules под Nginx:
>>>>>
>>>>> RewriteRule ^css/[0-9]+/(.*?)$ /css/$1 [L]
>>>>> RewriteRule ^js/[0-9]+/(.*?)$ /js/$1 [L]
>>>>>
>>>>> # we check if the .html version is here (caching)
>>>>> RewriteRule ^$ index.html [QSA]
>>>>> RewriteRule ^([^.]+)$ $1.html [QSA]
>>>>> RewriteCond %{REQUEST_FILENAME} !-f
>>>>>
>>>>> # no, so we redirect to our front web controller
>>>>> RewriteRule ^(.*)$ index.php [QSA,L]
>>>>>
>>>>> Спасибо за помощь...
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> nginx-ru mailing list
>>>>> nginx-ru at nginx.org
>>>>> http://nginx.org/mailman/listinfo/nginx-ru
>>>>
>>>>
>>>> _______________________________________________
>>>> nginx-ru mailing list
>>>> nginx-ru at nginx.org
>>>> http://nginx.org/mailman/listinfo/nginx-ru
>>>
>>> _______________________________________________
>>> nginx-ru mailing list
>>> nginx-ru at nginx.org
>>> http://nginx.org/mailman/listinfo/nginx-ru
>>
>> _______________________________________________
>> nginx-ru mailing list
>> nginx-ru at nginx.org
>> http://nginx.org/mailman/listinfo/nginx-ru
>>
>
>
>



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