Re: Нужно убрать слэш в конце URL

Vladislav V. Prodan universite на ukr.net
Пт Дек 3 14:41:38 MSK 2010


03.12.2010 13:20, Sergey Shepelev пишет:
> 2010/12/3 Vladislav V. Prodan <universite на ukr.net>:
>> 02.12.2010 23:15, Sergey Shepelev пишет:
>>>> как реализовать средствами nginx?
>>>>>
>>> location ~ (.+)/$ {
>>>   rewrite ^ $1 permanent;
>>> }
>>>
>>> Обратите внимание, что здесь вернётся 301 редирект. Дублирующийся
>>> контент на разных урлах поисковики как раз не любят.
>>>
>>
>> [emerg]: pattern "^" has less captures than referrenced in substitution
>> "$1" in /etc/nginx/conf/vhosts/site.conf:28
>>
>> # nginx -V
>> nginx version: nginx/0.7.65
> 
> Попробуйте так
> 
> location ~ (.+)/$ {
>   set $uri_no_slash $1;
>   rewrite ^ $uri_no_slash permanent;
> }
> 
> Если не получится, то так
> 
> location ~ /$ {
>   rewrite (.+)/$ $1 permanent;
> }
> 
> Полагаю, что второй вариант даже предпочтительнее.

Наверное, я где-то и что-то не допонял.

Нужно корректно обрабатывать http://site.com/bla-bla-bla
и делать редирект 301
http://site.com/bla-bla-bla/ --> http://site.com/bla-bla-bla

Все предыдущие конструкции делали это, но при http://site.com получался
бесконечный цикл, ибо браузер/вебсервер делал перенаправление на
http://site.com/, а конструкция опять перенаправляла на http://site.com



вот выдержка из конфига:

        location / {
                index index.php;
                try_files $uri /index.php$uri;
        }

        location ~ /index.php {
                fastcgi_pass unix:/var/run/php.socket;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root/index.php;
                include fastcgi_params;
                fastcgi_split_path_info ^(.+\.php)(.*)$;
                fastcgi_param PATH_INFO $fastcgi_path_info;
                fastcgi_connect_timeout 60;
                fastcgi_send_timeout 180;
                fastcgi_read_timeout 180;
                fastcgi_buffers 4 32k;
                fastcgi_busy_buffers_size 32k;
                charset utf-8;
        }

        location ~ \.php$ {
                fastcgi_pass unix:/var/run/php.socket;
                fastcgi_index index.php;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;

        }





-- 
Vladislav V. Prodan
VVP24-UANIC
+38[067]4584408
+38[099]4060508
vlad11 на jabber.ru


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