LINUX.ORG.RU
решено ФорумAdmin

Как прописать nginx правила только для конкретного location?

 ,


0

1

Если конфиг nginx такой, то все работает, захожу по адресу example.com перекидывает на example.com/warehouse/index.php?q=p:7

файлы php сайта находятся в папке /var/www/warehouse

так же сделал sudo chown -R www-data:www-data /var/www и sudo chmod 0755 -R /var/www

конфиги nginx пока минимальные т.к. планируются несколько сайтов с соответствующими location

server {
listen 80;
root /var/www;
index index.php index.html;
server_name example.com;

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

location = / {
    rewrite ^.+ /warehouse/index.php permanent;
}

location ~ /warehouse/ {
    try_files $uri $uri/ /warehouse/index.php;
}
}
Если конфиг nginx такой
server {
listen 80;
root /var/www;
index index.php index.html;
server_name _;

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

location /warehouse/ {
    rewrite ^.+ /warehouse/index.php permanent;
    try_files $uri $uri/ /warehouse/index.php;
}
}
то при попытке захода по адресу example.com/warehouse перекидывает на example.com/?q=p:7 и соотвественно не работает

Вопрос в следующем как конкретно прописать правила только для location ~ /warehouse/ чтобы nginx понимал если заходят по адресу example.com/warehouse надо перекинуть на example.com/warehouse/index.php

Ответ на: комментарий от garik_keghen

Спасибо за отклик. Попробовал, перезагрузил nginx, ввожу example.com/warehouse все равно перекидывает на example.com/?q=p:2 есть еще идеи?

brainbit
() автор топика
Ответ на: комментарий от goingUp

сейчас конфиг nginx такой, то что посоветовали тут

[sudo] password for test: 
server {
listen 80;
root /var/www;
index index.php index.html;
server_name _;

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

location = /warehouse/ {
    rewrite ^.+ /warehouse/index.php permanent;
    try_files $uri $uri/ /warehouse/index.php;
}
}
при попытке ввода адреса example.com/warehouse перекидывается example.com/?q=p:7

В самом начале еще пробовал location /warehouse {.. тоже самое :(

brainbit
() автор топика
Ответ на: комментарий от brainbit

У тебя точно 1 конфиг? Мне кажется, что этот даже не обратывает ничего.

server_name _; используется для того, чтобы обработать фейковые запросы на сервер, если такого домена, переданного в заголовке «Host:», то он залетит в этот блок. Поставь в server_name явно свой домен.

garik_keghen ★★★★★
()

Этот вопрос так и не решил как хотел, дело было в движке сайта, который работает только в корне почему-то. Соотвественно сделал поддомен warehouse.example.com и вопрос отпал.

brainbit
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.