J'aimerais détourner les demandes vers un sous-répertoire particulier, vers un autre emplacement racine. Comment? Mon bloc existant est:
server {
listen 80;
server_name www.domain.com;
location / {
root /home/me/Documents/site1;
index index.html;
}
location /petproject {
root /home/me/pet-Project/website;
index index.html;
rewrite ^/petproject(.*)$ /$1;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
} }
Autrement dit, http://www.domain.com devrait servir /home/me/Documents/site1/index.html alors que http://www.domain.com/petproject devrait servir /home/me/pet-Project/website/index.html - il semble que nginx réexécute toutes les règles après le remplacement, et http://www.domain.com/petproject sert juste /home/me/Documents/site1/index.html.
La configuration a le problème habituel qui se produit généralement avec nginx. Autrement dit, en utilisant la directive root
à l'intérieur du bloc location
.
Essayez d'utiliser cette configuration au lieu de vos blocs location
actuels:
root /home/me/Documents/site1;
index index.html;
location /petproject {
alias /home/me/pet-Project/website;
}
Cela signifie que le répertoire par défaut de votre site Web est /home/me/Documents/site1
, et pour /petproject
URI, le contenu est diffusé à partir de /home/me/pet-Project/website
répertoire.
Vous avez besoin de l'indicateur break
ajouté à la règle de réécriture, de sorte que le traitement s'arrête, et comme c'est à l'intérieur d'un bloc d'emplacement, le traitement se poursuivra à l'intérieur de ce bloc:
rewrite ^/petproject/?(.*)$ /$1 break;
Notez que j'ai également ajouté /?
au motif correspondant pour ne pas vous retrouver avec des doubles barres obliques au début de l'url.