Riscrivere una sottodirectory per root su nginx

diciamo che ho un sito http://domain/ e ho messo alcuni file in una sottodirectory /html_root/app/ ed uso la seguente regola di riscrittura per riscrivere questa cartella nella mia radice:

 location / { root /html_root; index index.php index.html index.htm; # Map http://domain/x to /app/x unless there is ax in the web root. if (!-f $request_filename){ set $to_root 1$to_root; } if (!-d $request_filename){ set $to_root 2$to_root; } if ($uri !~ "app/"){ set $to_root 3$to_root; } if ($to_root = "321"){ rewrite ^/(.+)$ /app/$1; } # Map http://domain/ to /app/. rewrite ^/$ /app/ last; } 

So che questo non è un modo intelligente perchè ho un'altra sottodirectory /html_root/blog/ e voglio che sia accessibile da http://domain/blog/ .

Il mio problema è che la regola di riscrittura sopra funziona correttamente ma ha ancora alcuni problemi: se accedo

http://domain/a-simple-page/ (Viene riscritto da http://domain/app/a-simple-page/ )

funziona bene, ma se accedo

http://domain/a-simple-page (senza trascinare traccia), reindirizza all'indirizzo originale:

http://domain/app/a-simple-page/ ,

Qualunque modo per redirect l'URL senza trailing-slash seguire la mia regola?

  • Nginx reindirizza un path ad un altro
  • Nginx: Riscrivi dal dominio di base a una directory secondaria
  • Uso di nginx per riscrivere URL all'interno delle risposte in output
  • Come estrarre solo il nome del file dalla richiesta uri
  • riscrittura urlx urinx: differenza tra pausa e ultima
  • riscrivere il sottodominio di nginx
  • trasformando una riscrittura di apache a una riscrittura di nginx
  • Convertire la regola htaccess su nginx
  • One Solution collect form web for “Riscrivere una sottodirectory per root su nginx”

    Caso classico di seguire un tutorial sbagliato in giù a destra invece di leggere la wiki suggerisco di leggere le funzionalità che dovresti usare (come la posizione e i try_files) così come il mio primer Nginx mentre manchi completamente le basi di Nginx.

    Ho fatto un tentativo di scrivere quello che vuoi in un formato adeguato, ma non posso promettermi che functionrà perché non sono sicuro di capire cosa stai cercando di fare, tuttavia, dovrebbe darti una base da partire .

     server { listen 80; server_name foobar; root /html_root; index index.php index.html index.htm; location / { try_files $uri $uri/ @missing; } location /app { # Do whatever here or leave empty } location @missing { rewrite ^ /app$request_uri?; } } 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.