gelraen 13.01.2012 11:21

А как можно сэмулировать RewriteBase в nginx? У меня тут есть поделка на пхп, которая живёт не в корне хоста, а в алиасе, и хочет много разных rewrite. И мне сильно не хочется в каждом rewrite rule держать один и тот же префикс по два раза. Пробовал записать этот префикс в переменную, но не могу сделать чтобы в регексп подставлялось значение этой переменной. Пстач, что делать?

1. utros 13.01.2012 15:11 eoranged

Гугл и вики nginx'а тебе подскажут скрипт, который сделает это за тебя

2. gelraenutros /1 13.01.2012 16:46

чочо? в смысле сгенерят простыню из rewrite-правил? нахуй-нахуй

3. utrosgelraen /2 13.01.2012 16:55 eoranged

http://wiki.nginx.org/HttpRewriteModule Просветляйся

4. gelraenutros /3 13.01.2012 16:56 imax

я сегодня весь день этим просветлялся. Там нету ничего похожего на апачев RewriteBase

5. utrosgelraen /4 13.01.2012 16:56 eoranged

Што это?
Пример в студию!

6. gelraenutros /5 13.01.2012 16:57 imax

пример чего? ты что несёшь вообще?

7. utrosgelraen /6 13.01.2012 16:59 eoranged

Правила RewriteBase, которое ты пытаешься переписать и что оно делает.

8. gelraenutros /7 13.01.2012 17:02 imax

>_>
RewriteBase указывает префикс относительно которого применяются все последющие правила RewriteRule. Например ты наговнячил гору правил, которые думают что всё лежит в DocumentRoot, а потом ты передвигаешь всю эту упячку в /govno и дописываешь RewriteBase /govno — и у тебя все работает как и раньше. Вот в чём суть, $username.

9. utrosgelraen /8 13.01.2012 17:05 eoranged

Положи все свои рерайты в соответствующий location /govno и будет тебе щастье.

10. gelraenutros /9 13.01.2012 17:07 imax

хуй там. надо ещё в регекспе указывать /govno (иначе не матчится, если нужна вся строка запроса) и в replacement string (потому что заменяется вся строка запроса). Короче, ты ты что-то спизданул не подумав.

11. utrosgelraen /10 13.01.2012 17:13 eoranged

location /govno/ {
set $re_prefix '/govno/';
rewrite ^$re_prefix(.*)$ /$1;
rewrite ^/blah/hui(.*)$ /hui$1; # /govno/blah/hui → /hui;
# other regexes goes here...
rewrite ^(.*)$ $re_prefix$1;
}

12. gelraenutros /11 13.01.2012 17:15 imax

ты сам-то пробовал? переменные в регексп не подставляются

13. utrosgelraen /12 13.01.2012 17:16 eoranged

nginx -V мне покажи

14. gelraenutros /13 13.01.2012 17:17 imax

% nginx -V
nginx version: nginx/1.0.11
TLS SNI support enabled
configure arguments: --prefix=/usr/local/etc/nginx --with-cc-opt='-I /usr/local/include' --with-ld-opt='-L /usr/local/lib' --conf-path=/usr/local/etc/nginx/nginx.conf --sbin-path=/usr/local/sbin/nginx --pid-path=/var/run/nginx.pid --error-log-path=/var/log/nginx-error.log --user=www --group=www --with-ipv6 --with-google_perftools_module -- http-client-body-temp-path=/var/tmp/nginx/client_body_temp -- http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp -- http-proxy-temp-path=/var/tmp/nginx/proxy_temp -- http-scgi-temp-path=/var/tmp/nginx/scgi_temp -- http-uwsgi-temp-path=/var/tmp/nginx/uwsgi_temp -- http-log-path=/var/log/nginx-access.log --with- http_addition_module --with- http_dav_module --with- http_flv_module --with- http_perl_module --with- http_realip_module --with- http_ssl_module --with- http_stub_status_module --with- http_sub_module --with-pcre --add-module=/tmp/usr/ports/www/nginx/work/passenger-3.0.11/ext/nginx

15. utrosgelraen /14 13.01.2012 17:18 eoranged

Хм...

16. utrosgelraen /14 13.01.2012 17:18 eoranged

Замени в двух местах $re_prefix на /govno/ :3

17. gelraenutros /16 13.01.2012 17:19 imax

тогда, конечно, работает, да. но это ровно то, чего я хотел избежать

18. utrosgelraen /17 13.01.2012 17:19 eoranged

В чём проблема написать в начале и конце списка по рерайту?

19. gelraenutros /18 13.01.2012 17:21 imax

в смысле сначала убрать префикс, а потом вернуть его взад? пиздец, до такого хуёвого решения я даже не додумался >_<

20. gelraenutros /18 13.01.2012 17:22 imax

а, да, как мне в таком случае делать rewrite .... last; ?

21. utrosgelraen /20 13.01.2012 17:22 eoranged

Не делай :3

22. gelraenutros /21 13.01.2012 17:22 imax

>_<

23. gelraenutros /21 13.01.2012 17:23 imax

говно ваш nginx, вот.

24. utrosgelraen /23 13.01.2012 17:24 eoranged

Не пишите говнорерайты и всё будет ок.

Do you really want to delete ?