непонятка с rewrite
Igor Sysoev
is at rambler-co.ru
Sat Apr 9 16:54:10 MSD 2005
On Sat, 9 Apr 2005, RaPaMaN wrote:
> А как реализовать следующую вещь:
>
> Перехватывать urlы вида /en/blaster/master/twister/ и делать rewrite на
> index.php, при этом пропускать запросы к css,картинкам и запросы на php и
> прямо корень сайта пропусать на fastcgi ?
>
> Я сделал следующий конфиг:
>
> location = / {
> .... на fastcgi ....
> }
>
> location ~* ^.+(\.htaccess|\.htpasswd|htpasswd|htaccess|\.inc)$ {
> return 403;
> }
>
>
> location ~* ^(?!.+\.(css|gif|jpg|txt|html|htm|png|jpeg|ico))$ {
> rewrite ^.+$ /index.php break;
> }
>
> location ~* ^.+\.(php)$ {
> .... на fastcgi ....
> }
>
> location ~* ^.+\.(jpg|jpeg|gif|png|css|ico|html|txt)$ {
> root ... статика ...
> }
>
>
> в итоге на все запросы - /en/blaster/master/ или /booster/ - 404 ошибка и
> все, не помогает даже добавление location еще одного
> location ~* ^(/.+/)$ {
> rewrite ....
> }
Не нужен break в
rewrite ^.+$ /index.php break;
так как после break не определяется конфигурация для изменённого URI,
а остаётся та, к которой выполнялся rewrite, то есть,
location ~* ^(?!.+\.(css|gif|jpg|txt|html|htm|png|jpeg|ico))$ {
rewrite ^.+$ /index.php break;
}
В этой конфигурации нет ничего про fastcgi, это статические файлы.
> Как я понимаю, в rewrite я не могу прописать pcre, чтобы rewrite срабатывал
> "для всего, кроме ...), т..е. ^(?:.+(?!\.css|.htm....))$
Можно.
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list