修改nginx配置文件,添加try_file配置以下,便可實現對 React browser router 的支持。html
location / { root /var/www/mysite; try_files $uri /index.html; }
可是該方式也會存在缺點,只要/index.html
存在,服務端就不會響應404,即便客戶端請求了實際不存在的JS/CSS/圖片文件。nginx
要使非HTML請求實際資源不存在時響應404,方法是:若請求的資源不是HTML,則放棄嘗試後備文件。spa
location / { root /var/www/mysite; set $fallback_file /index.html; if ($http_accept !~ text/html) { set $fallback_file $uri; } try_files $uri $fallback_file; }
要使得try_files不影響index和/與autoindex,方法是:若請求的路徑是目錄,則放棄嘗試後備文件。code
location / { root /var/www/mysite; index index.html; autoindex on; set $fallback_file /index.html; if ($http_accept !~ text/html) { set $fallback_file /null; } if ($uri ~ /$) { set $fallback_file $uri; } try_files $uri $fallback_file; }