gpt4 book ai didi

javascript - index.html 的 mod_rewrite 打破了深度 URL 的相对路径

转载 作者:行者123 更新时间:2023-11-30 08:10:42 25 4
gpt4 key购买 nike

对于单页应用程序,我的 .htaccess 文件中有以下 RewriteRule 以将所有流量定向到 index.html,以便 JS 可以解析 URL 并相应地触发 Controller 。

  # html5 pushstate (history) support:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index
RewriteRule (.*) index.html [L]

这对于像 www.mydomain.com/resource 这样的顶级 url 很好用,但是任何更深层次的 url,比如 www.mydomain.com/resource/123,在 index.html 中会破坏当前目录 ('.') 的值。 html.

比如我的index.html中的一个script标签是这样的

<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”。

不用说,这些文件不存在并且应用程序中断。

任何人都可以阐明这里发生的事情吗?谢谢。

最佳答案

我让它工作了,这是这样的:

当您将以下内容作为 src 时:

<script src="js/app/config.js"></script>

您是对的,Apache 正确地重新路由到 index.html(或您拥有的任何后备 URL),然后尝试根据 URL 中的嵌套路径相对地访问资源。

要纠正这个问题,您需要有一个前导“/”来表示根目录,如下所示:

<script src="/js/app/config.js"></script>

一旦我为我的 js 库、css 表等执行了此操作,它就可以正常工作,并且 backbone.js 会处理所有 URL。

注意:在 Apache 2.2+ 中,您现在可以使用 FallbackResource而不是 mod_rewrite,它需要更少的行并完成同样的事情。

另一个建议是尽可能使用绝对 URL。

关于javascript - index.html 的 mod_rewrite 打破了深度 URL 的相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10865480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com