Я хотел бы перенаправить запросы в конкретный подкаталог, в другое корневое местоположение. Как? Мой существующий блок:
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
, и для /petproject
URI, контент подается с /home/me/pet-Project/website
каталог.
Вам нужен break
к правилу перезаписи добавлен флаг, так что обработка останавливается, и поскольку он находится внутри блока местоположения, обработка будет продолжена внутри этого блока:
rewrite ^/petproject/?(.*)$ /$1 break;
Обратите внимание, я также добавил /?
к соответствующему шаблону, чтобы в начале URL-адреса не было двойной косой черты.