Я хотел бы отклонить от запросов к конкретному подкаталогу к другому корневому местоположению. Как? Мой существующий блок:
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;
} }
Таким образом, http://www.domain.com должен вручить /home/me/Documents/site1/index.html, тогда как http://www.domain.com/petproject должен вручить /home/me/pet-Project/website/index.html - кажется, что nginx повторно выполняет все правила после замены, и http://www.domain.com/petproject просто вручает /home/me/Documents/site1/index.html.
Конфигурация имеет обычную проблему, которая обычно случается с nginx. То есть, используя директиву root
внутри блока location
.
Попробуйте использовать эту конфигурацию вместо ваших текущих блоков location
:
root /home/me/Documents/site1;
index index.html;
location /petproject {
alias /home/me/pet-Project/website;
}
Это означает, что по умолчанию каталог для вашего веб-сайта - / home / me / Documents / site1
, а для URI / petproject
контент предоставляется с / home / me / pet-Project / website
каталог.
Вам нужно добавить флаг break
к правилу перезаписи, чтобы обработка останавливалась, и поскольку это находится внутри блока местоположения, обработка продолжится внутри этого блока:
rewrite ^/petproject/?(.*)$ /$1 break;
Обратите внимание, что я также добавил /?
в соответствующий шаблон, чтобы в начале URL-адреса не было двойных слэшей.