непонятка с 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