React Router V4 - ошибка 404 при обновлении - проблема с Nginx? - PullRequest
0 голосов
/ 05 февраля 2019

У меня проблема с развертыванием React на моем сервере Nginx VPS.У меня установлена ​​WordPress внутри моей корневой папки, а приложение - в папке «my-app».

Когда я впервые открываю приложение, моя директория загружается, и я могу переключаться между компонентами.Но когда я обновляю страницу, я получаю страницу 404.

package.json: "homepage": "http://xxxxxx.com/my-app",

и App.js:

Локально с MampPro, это работает, потому что я использую Apache. Я пробовал несколько настроек от Google, но, похоже, ничего не работает.

Кто может мне помочь?

Моя конфигурация nginx:

upstream php-handler-http {
    server 127.0.0.1:9000;
    #server unix:/var/run/php5-fpm.sock;
}

server {
    listen 80 default_server;
    server_name xxxxxx.com;
    #server_name wordpress.example.com;

    root /var/www/html/;
    index index.php index.html;

    # set max upload size
    client_max_body_size 2G;
    fastcgi_buffers 64 4K;

    access_log /var/log/nginx/wordpress_http_access.log combined;
    error_log /var/log/nginx/wordpress_http_error.log;

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

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~* \.(htaccess|htpasswd) {
        deny all;
    }

    location ~ \.php(?:$|/) {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_pass php-handler-http;
        fastcgi_read_timeout 60s;
    }

    # set long EXPIRES header on static assets
    location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
        expires 30d;
        access_log off;
    }

}

Ответы [ 2 ]

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

Я бы попробовал это, установите для домашней страницы package.json значение "./my-app".

. Ранее я обнаружил, что это полезно, поскольку теперь существует маршрутизация на стороне клиента и на стороне сервера.в вашем приложении: URL-адреса React-маршрутизатора не работают при обновлении или записи вручную

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

Я не программист на PHP, но маршрутизация React не работает как клиентская маршрутизация в Angular ( URL-адреса React-маршрутизатора не работают при обновлении или записи вручную ).

В Node я обычно добавляю перехват всех маршрутов, которые возвращают индекс, возможно, в PHP есть нечто похожее:

app.get('*', function(req, res) {
    res.sendfile('./public/index.html');
});
...