random_index
Ruslan Ermilov
ru на nginx.com
Чт Ноя 3 20:30:48 UTC 2011
On Thu, Nov 03, 2011 at 08:31:04PM +0400, Maxim Dounin wrote:
> Hello!
>
> On Thu, Nov 03, 2011 at 07:28:05PM +0300, ola wrote:
>
> > Здравствуйте, Nginx-ru.
> >
> > Помогите, пожалуйста, разобраться с random_index.
> >
> > server {
> > listen 127.0.0.1:80;
> > server_name localhost;
> > error_log logs/error.log debug;
> >
> > location / {
> > root /common/example.org/www;
> > index index.html;
> > }
> >
> > location ~ ^/banner(\d+)/$ {
> > alias /common/example.org/adv/$1/;
> > random_index on;
> > }
> > }
> >
> > При запросе /banner2/ получается 404-я ошибка, nginx пытается отдать
> > файл /common/example.org/www/banner2/1.html
> >
> > Если использовать location ~ ^/banner(\d+)/ {} (без завершающего $),
> > то nginx делает 10 внутренних редиректов и "Redirection limit of 10
> > URL's reached"
>
> Если в директиве alias используются переменные, то она задаёт
> полный путь к файлу, который надо использовать.
Это неверно. Наличие в значении alias переменных не приводит
к такому эффекту. Правильно написано в документации, а именно:
если alias указана внутри location, заданного регулярным
выражением, то regexp должен содержать captures, и alias должна
на них ссылаться. В любом случае значение директивы alias заменяет
значение директивы location целиком, будь то regexp или префикс.
> Должно сработать как-то так:
>
> location ~ ^/banner(?<number>\d+)/(?<file>.*) {
> alias /common/example.org/adv/$number/$file;
> random_index on;
> }
--
Ruslan Ermilov
Подробная информация о списке рассылки nginx-ru