nginx игнорирует часть местоположения - PullRequest
1 голос
/ 11 марта 2012

Я потратил час на поиски ответа на этот вопрос, но, если вы не знаете словарный запас, его очень трудно найти. То, что я хочу, очень просто. У меня есть сервер, как так:

server {
  listen 80;
  server_name test.dev;
  root /srv/www;

  location / {
    index foo.html;
  }

  location /foo {
    index foo.html;
  }

  location /bar {
    index foo.html;
  }
}

Я хочу, чтобы /, / foo и / bar указывали на точно такой же файл . Другими словами, я хочу, чтобы часть местоположения была полностью проигнорирована. Просто подайте файл из корневого каталога, который я вам говорю.

Псевдоним, кажется, не является ответом, не знает, какой файл он должен обслуживать.

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Я бы, вероятно, использовал переписать.

server {
  listen 80;
  server_name test.dev;
  root /srv/www;

  location / {
  index foo.html;
  rewrite  ^/foo(.*)$ /$1  last;
  rewrite  ^/bar(.*)$ /$1  last;
  break;
  }

}

Что-то в этом роде, да, я думаю, вы можете понять это отсюда:)

0 голосов
/ 11 марта 2012

Попробуйте перенаправить каждое подходящее местоположение в именованное местоположение, которое будет обслуживать файл.

server {
    ...
  error_page 418 = @response;

  location /foo {
    return 418;
  }
  location /bar {
    return 418;
  }
  location @response {
    index response.html;
  }
}
...