【发布时间】:2018-10-20 01:29:10
【问题描述】:
我有一堆要重定向到单个页面的 URL。在我的 .htaccess 文件中,我有...
FallbackResource home.php
所以任何链接都会重定向到该页面,我有一个 PHP 脚本,它获取 URL 并从 mysql 表加载页面。我构建了一个没有脚本/样式资源的测试页面,一切正常。但是,当我添加样式和 javascript 时,出现以下错误:
main.js:1 Uncaught SyntaxError: Unexpected token <
此错误仅出现在其中包含“/”的 URL 中。
- 所以对于 url
localhost/home.php显示我的页面,因为它应该 没有内容。 - 网址
localhost/tax-information将显示带有内容的home.php
加载了应有的“税务信息”。 - url
localhost/tax-information/school-authority-contact-information将显示 home.php 的内容 已加载“税务信息/学校权威联系信息”,但会引发错误并因此 不呈现样式表或有任何可用的 javascript。
错误如下所示:
Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost/toh/tax-information/css/style.css".
Uncaught SyntaxError: Unexpected token <
我知道这是因为正在加载的资源在第一个字符中有一个“<”,但这对于像 css 这样的资源没有意义。
所以我检查了我的网络选项卡以查看正在加载哪些资源,并且它正在将每个资源加载到错误的路径中。
<style src="css/style.css> 最终加载 localhost/toh/tax-information/css/style.css 而不是 localhost/css/style.css。打开该文件后,它不是 CSS,而是请求页面的完整 HTML(因此出现“Unexpected token <”错误)。当您在网络选项卡中单击它们时,甚至图片最终都会以某种方式变为 HTML。通过 cdn 加载的任何内容(因此任何完整的 URL 资源)都可以正常加载。
这只发生在具有辅助路径(如 (localhost/this/that))但为任何只是主路径 (localhost/this) 的任何内容加载正确资源的 URL 上。
我可以看到问题是由 FallbackResource 和使用相对路径加载资源引起的。如果我将资源的路径更改为绝对路径(例如 css/style.css -> http://localhost/css/style.css),那么它可以正常工作,没有任何问题。将所有内容重新编码为绝对路径将解决我的问题,但不是一个实际的解决方案。这让我相信我的问题是我的 .htaccess。有没有另一种方法可以将所有 url 路径重定向到单个页面并让它们通过相对路径加载资源?
【问题讨论】:
-
任何不以 / 开头的 src 或 href 都是相对于当前位置的,所以如果你想加载 /css/style.css,你应该提出这个要求。
-
如果您在 htaccess 中执行 301 重定向,请记住浏览器会保留此信息,直到您删除缓存
标签: javascript php html css .htaccess