【发布时间】:2013-09-16 05:48:55
【问题描述】:
对于单页应用程序,我的 .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,会在索引中破坏当前目录 ('.') 的值。 html.
例如,我的 index.html 中的脚本标签是这样的
<script src="js/app/config.js"></script>
会翻译成 src="resource/app/config.js"
或者,对于像“www.mydomain.com/more/nested/resource/123”这样的网址,同一个 js 文件上的 src 将被解释为“more/nested/resource/app/config.js”。
不用说,这些文件不存在并且应用程序中断。
任何人都可以解释这里发生了什么吗?谢谢。
【问题讨论】:
-
我没有完全理解,但您似乎可以像这样使用 html 基本标签:
使用 IE 的完整主机名兼容性(http 中的点用于破坏 url 以显示真实文本) -
这个问题是我需要相对 url 才能在我的 .html 文件中工作,因为这个站点在多个本地、阶段、测试和生产域之间不断移动。
标签: javascript apache mod-rewrite single-page-application