对于单页应用程序,我的 .htaccess 文件中有以下 RewriteRule 以将所有流量定向到 index.html,以便 JS 可以解析 URL 并相应地触发控制器。
# html5 pushstate (history) support:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index
RewriteRule (.*) index.html [L]
这适用于顶级 URL,如 www.mydomain.com/resource,但更深层次的 URL,如 www.mydomain.com/resource/123,会在 index.html 中破坏当前目录 ('.') 的值。
例如,我的 index.html 中的脚本标记如下
<script src="js/app/config.js"></script>
将转化为 src="resource/app/config.js"
或者,对于像“www.mydomain.com/more/nested/resource/123”这样的 url,同一个 js 文件上的 src 将被解释为“more/nested/resource/app/config.js”。
不用说,这些文件不存在并且应用程序中断。
任何人都可以对这里发生的事情有所了解吗?谢谢。