RewriteCond + location
Igor Sysoev
is at rambler-co.ru
Fri Nov 14 12:02:28 MSK 2008
On Wed, Nov 12, 2008 at 03:14:04PM +0300, dron wrote:
> неудобно уже задавать вопросы по rewrite, но самому осилить не
> получается.
>
> Есть:
> RewriteCond %{REQUEST_URI} !^/(admin|news|index.php)/(.*)$
> RewriteCond %{REQUEST_URI} !^/admin$
> RewriteCond %{REQUEST_URI} !^/site$
> RewriteRule ^([0-9a-z/_]+)$ /index.php?application=content&path=$1 [L,NC]
>
>
> пробовал:
> location ~^/admin/(news|objects|faq|index)/?(.*)/?${
> rewrite ^/([0-9a-z/_]+)$ /?application=content&path=$1 last;
> }
>
> location ~^/site${
> rewrite ^/([0-9a-z/_]+)$ /?application=content&path=$1 last;
> }
>
> location ~^/admin${
> rewrite ^/([0-9a-z/_]+)$ /?application=content&path=$1 last;
> }
>
> с кавычками, с * тоже пробовал.
> Но это правило вообще не отрабатывает, как-будто и нет его...
>
> если так:
> location / {
> rewrite ^/([0-9a-z/_]+)$ /?application=content&path=$1 last;
> }
>
> то отрабатывает везде, даже там, где не требуется, например в /admin/
> и остальных исключениях...
Во-первых, "!^/admin$" и прочие "!..." - это отрицания.
Во-вторых,
- location ~^/admin/(news|objects|faq|index)/?(.*)/?${
+ location ~ ^/admin/(news|objects|faq|index)/?(.*)/?${
В-третих, регулярные выражения в
RewriteCond %{REQUEST_URI} !^/(admin|news|index.php)/(.*)$
и
location ~^/admin/(news|objects|faq|index)/?(.*)/?${
разные.
Как-то так, в зависимости от того, что делается в остальныом конфиге:
location / {
rewrite ^/([0-9a-z/_]+)$ /index.php?application=content&path=$1 last;
}
location = /site {
...
}
location = /admin {
...
}
location ~ \.php$ {
...
}
location ~ ^/(admin|news|index\.php)/(.*)$ {
...
}
--
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list