Сейчас 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