nginx: bir konum hariç tümünü yeniden yaz


11

Şu anda nginx'im kullandığımız bir ana etki alanına birkaç alanı yeniden yazıyor. İşte benim yapılandırma bir kural:

server {
  listen X.X.X.X:80;
  server_name .exampleblog.org;
  rewrite ^(.*) http://blog.example.org$1 permanent;
}

** exampleblog.org * 'a yapılan her istek blog.example.org'a yönlendirilir

Şimdi www.exampleblog.org/+ ve exampleblog.org/+ ' nin kullanıcıyı Google Artı sayfamıza yönlendirmesini istiyorum . Farklı sürümlerini denedi:

server {
  listen X.X.X.X:80;
  server_name .exampleblog.org;
  location /+ {
    rewrite ^ https://plus.google.com/12345678901234567890/ permanent;
  }
  rewrite ^(.*) http://blog.example.org$1 permanent;
}

Yukarıdaki ve diğer sürümler sadece blog.example.org/+ adresine yönlendiriyor - neyi yanlış yapıyorum?

Yanıtlar:


14

Nginx'teki yönergeler, yapılandırma dosyasında göründükleri sırayla geçerli değildir. Sunucu düzeyinde yeniden yazma, bir konum seçilmeden önce çalışır ve her zaman eşleşir, böylece her şeyi yeniden yönlendirir. Bunun gibi ikinci bir konuma ihtiyacınız var:

server {
  listen x.x.x.x:80;
  server_name .exampleblog.org;

  # Match /+ requests exactly    
  location = /+ {
    # I prefer return 301 instead of rewrite ^ <target> permanent,
    # but you can use either
    return 301 http://plus.google.com/1234567890/;
  }

  # Match everything else
  location / {
    return 301 http://blog.example.org$request_uri;
  }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.