react使用BrowserRouter打包后,刷新页面出现404

文档

https://gkedge.gitbooks.io/react-router-in-the-real/content/apache.html

nginx nginx.conf

server {
  listen 80 default_server;
  server_name /var/www/example.com;

  root /var/www/example.com;
  index index.html index.htm;      

  location ~* \.(?:manifest|appcache|html?|xml|json)$ {
    expires -1;
    # access_log logs/static.log; # I don't usually include a static log
  }

  location ~* \.(?:css|js)$ {
    try_files $uri =404;
    expires 1y;
    access_log off;
    add_header Cache-Control "public";
  }

  # Any route containing a file extension (e.g. /devicesfile.js)
  location ~ ^.+\..+$ {
    try_files $uri =404;
  }

  # Any route that doesn't have a file extension (e.g. /devices)
  location / {
    try_files $uri $uri/ /index.html;
  }
}

apache 修改httpd.conf

Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration

如果出现上面的错误,找到 LoadModule rewrite_module 这行, 取消掉前面的注释

https://stackoverflow.com/questions/10144634/htaccess-invalid-command-rewriteengine-perhaps-misspelled-or-defined-by-a-m

<VirtualHost *:80>
  ServerName localhost
  DocumentRoot D:\\apache\\Apache24\\htdocs\\build

  <Directory "D:\\apache\\Apache24\\htdocs\\build">
    RewriteEngine on
    # Don't rewrite files or directories
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    # Rewrite everything else to index.html to allow html5 state links
    RewriteRule ^ index.html [L]
  </Directory>
</VirtualHost>