перенаправление на root, даже если запрос пуст - PullRequest
0 голосов
/ 01 февраля 2019

Все мои ссылки перенаправляют в root, где я обслуживаю файл "index.php".

Это мой конфиг nginx: /etc/nginx/sites-available/myproject.local

server {
    listen 80;
    listen 444 ssl http2;
    server_name .buildurlshortener.local;
    root "/home/vagrant/codecourse/buildurlshortener/public";

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;

    }


    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log off;
    error_log  /var/log/nginx/buildurlshortener.local-error.log error;

    sendfile off;

    client_max_body_size 100m;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;


        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
    }

    location ~ /\.ht {
        deny all;
    }

    ssl_certificate     /etc/nginx/ssl/buildurlshortener.local.crt;
    ssl_certificate_key /etc/nginx/ssl/buildurlshortener.local.key;
}

Если я сделаю почтовый запрос к "http://myproject.local/something",, он будет работать.

Но почтовый запрос к корню, т.е. http://myproject.local, не работает. Я получаю"405 Не разрешено "из nginx.

Если я добавлю правило с" location ~ {...} ", то я смогу опубликовать в" http://myproject.local". Но теперь это "http://myproject.local/something", который не работает.

Как я также могу обслуживать "index.php" из корня ("/"), не нарушая другие мои маршруты?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

К этой строке:

location ~ .php $

Я добавил |/$:

location ~ .php $ | / $

Так что он также может принимать пустой запрос.

Теперь я могу использовать почтовые запросы к "myproject.local", "myproject.local / index.php", "" myproject.local / someroute ".

0 голосов
/ 01 февраля 2019

Одна из причин сообщения «405 Not Allowed» заключается в том, что nginx не может обслуживать статический контент по POST-запросу.Не могли бы вы показать конфигурацию более подробно?

...