múltiplo reescreve nginx

1

Atualmente, tenho meu URL para minha página de vídeo reescrito, assim

rewrite ^/watch/(.*) /video.php?vid_id=$1 last;

Isso faz com que a URL pareça

www.site.com/watch/123456

em vez de

www.site.com/video.php?vid_id=123456

Eu quero poder adicionar o título no URL, sem que isso afete a localização e o comportamento atual do URL acima

www.site.com/watch/123456/vid-title

No entanto, gostaria também de poder usar www.site.com/watch/123456 ou www.site.com/watch/123456/ para acessar meu vídeo e, portanto, ser equivalente ao meu URL original (tenha flexibilidade no URL). Alguém sabe como fazer isso com o NGINX? Preciso de várias reescritas? Eu tentei combinações de várias reescritas sem sucesso. Eu já vi isso em muitos sites, mas não tenho certeza de como eles conseguiram isso.

    
por Scarface 12.10.2011 / 06:01

1 resposta

2

Tente isto:

rewrite ^/watch/([^/]+)/?(?:vid-title)?$ /video.php?vid_id=$1 last;
  • ([^/]+) corresponde a qualquer número de caracteres, mas não a uma barra. Você pode usar ([0-9]+) se você quiser.
  • A máscara de pergunta ? faz com que a regex precedente seja opcional.
  • ?: informa ao mecanismo de regex que esse grupo não deve criar um backreference
por 12.10.2011 / 07:04

Tags