我正在构建一个基于地图的单页应用程序,该应用程序会在用户浏览时更改其 URL。我的主要问题是 Google Chrome 的 Lighthouse 不喜欢我使用
ErrorDocument 404
Apache 规则重定向到根页面并保留 URL。我认为 404 错误对于 SEO 来说也不是很好,但我只是猜测。
如果请求的 URL 不是文件,我希望 Apache 将我的用户重定向到
/
,并发送合适的 status_code
(301 而不是 404),并且我需要能够访问用户的原始 URL页面加载后使用 JavaScript。
# This works as intended except that it doesn't send a 301 code
ErrorDocument 404 /
# This works as intended except that JavaScript cannot access the user's original URL
RewriteEngine On
RewriteCond %{REQUEST_URI} !\.[a-z]{2,4}$
RewriteRule ^(?!\/$).+ / [R=301,L]
# This redirects everything, including existing script, image, or style files back to / with a 301 code
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(?!\/$).+ / [R=301,L]
您可能对依赖历史 API 来更改客户端状态而不调用服务器的客户端路由器库感兴趣。 对于普通 JS,请查看这篇文章 https://dev.to/rohanbagchi/how-to-write-a-vanillajs-router-hk3
这是一个著名的 React 应用程序 https://reactrouter.com/en/main/start/concepts