ПРОЕКТЫ 


  АРХИВ 


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: Простой редирект средствами nginx



On Wed, 2 Feb 2005, Mike Kolesnikov wrote:

Igor Sysoev wrote:

Сейчас redirect просто добавляет полный URI к параметру.
На днях я полностью переписал rewrite - там будет возможность делать
редиректы.

Замечательная новость! После гибкости mod_rewrite постоянно упираешься
в косяки, подобные этому...
А что Вы можете сказать по поводу "зацикливания" редиректа?
Вроде как URI /forums/index.php не должен попадать в location = /forums/ ?

"=" означает точное равенство URI и location.

Если редирект не обязяателен, то можно сделать так:
        location = /forums/ {
               fastcgi_pass  localhost:1234;
               ...

Вся идея как раз в редиректе, причем желательно 301 - для SEO :)

Будет такой вариант:
rewrite  ^/forums/$  /forums/index.php  permanent;

Раз уж речь зашла о редиректах и rewrites, может кто-нибудь делал
конструкцию для поддержки юзерских директорий плана domain.com/~user/?
Для простоты, чтоб не трогать getpwent, предполагаем, что все они
лежат в /home/user/web.

Вроде бы вот это работает:

 rewrite ^/~([\w-]+)/(.*)$       /home/$1/web/$2 last;

 location ~* ^/home/([\w-]+)/web/ {
        root /;
        index index.htm index.html index.php;
 }

Но тогда становится возможным такой URL: http://domain.com/home/user/web/file,
что не очень хорошо. Конечно, никто наверное и не заметит, но запрос
domain.com/~user/dir (без конечного слэша) автоматом перенаправляет как раз
на http://domain.com/home/user/web/dir/

Хотя, если версия с новым rewrite модулем планируется к выходу вскоре,
то вопрос наверное не актуален - надеюсь, там такие вещи будут делаться
проще.

Нет, это неправильный подход. Нужно будет придумать что-то вроде

  location ~* ^/~([\w-]+) {
       alias /home/$1/web;
  }

или

  rewrite ^/~([\w-]+)/(.*)$  /home/$1/web/$2  alias;

тогда uri остаётся без изменений и редирект уйдёт правильным.
Я склоняюсь к реализации втрого варианта.


Игорь Сысоев
http://sysoev.ru




 




Copyright © Lexa Software, 1996-2009.