0

经过数小时的研究和修修补补,我终于设法让backbone.js 路由正常工作,但有一个例外:如果我输入“/workingdir/routepath” - 一切都很好并且它使用“routpath”路由,但是如果我输入“/workingdir/routepath/”或“/workingdir/routepath/asdf”或任何类似的东西,我的网站中断,我收到看起来有点像这样的错误:

Resource interpreted as Stylesheet but transferred with MIME type text/html:  "http://example.com/staging/personal/css/style.css". fj:5
Resource interpreted as Script but transferred with MIME type text/html: "http://example.com/staging/personal/scripts/jquery-1.7.2.min.js". fj:6
Uncaught SyntaxError: Unexpected token < jquery-1.7.2.min.js:1
Resource interpreted as Script but transferred with MIME type text/html: "http://example.com/staging/personal/scripts/nav.js". fj:6
Resource interpreted as Script but transferred with MIME type text/html: "http://example.com/staging/personal/scripts/underscore-min.js". fj:6
Uncaught SyntaxError: Unexpected token < underscore-min.js:1
Resource interpreted as Script but transferred with MIME type text/html: "http://example.com/staging/personal/scripts/backbone-min.js". fj:6
Uncaught SyntaxError: Unexpected token < backbone-min.js:1
Uncaught SyntaxError: Unexpected token < 

而且页面没有任何样式。我认为问题来自 URL 中的斜杠,使 css 和 js 文件的路径指向错误的位置(它们应该在“staging/css/”和“staging/scripts/”中,但正如日志所示,它正在寻找“staging/personal/xxx”)。

有想法该怎么解决这个吗?感谢您的时间!

4

2 回答 2

1

根据请求 URI 是否有斜杠,相对路径引用的解析方式会有所不同。我想这就是导致你的问题的原因。考虑这些链接:

<!-- Relative path references -->

<link href="staging/css/style1.css">

<link href="./staging/css/style2.css">


<!-- Absolute path reference -->

<link href="/workingdir/staging/css/style3.css">

这是根据请求 URI 解析这些路径的方式:

REQUEST_URI = /workingdir/routepath

/workingdir/staging/css/style1.css

/workingdir/staging/css/style2.css

/workingdir/staging/css/style3.css


REQUEST_URI = /workingdir/routepath/

/workingdir/routepath/staging/css/style1.css

/workingdir/routepath/staging/css/style2.css

/workingdir/staging/css/style3.css

因此,如果您希望能够使用尾部斜杠或其他段发出请求,您将需要使用绝对路径引用。

于 2012-06-14T01:35:06.170 回答
0

只是为了与其他遇到此问题的人分享。我有同样的问题,但现在有不同的解决方案。这些对 .htaccess 的添加最初并没有奏效:

AddType application/x-javascript .js
AddType text/css .css 
AddType text/javascript .js
AddType text/css .css
AddType font/ttf .ttf
AddType font/eot .eot
AddType font/otf .otf
AddType application/woff .woff
AddType font/woff .woff
AddType font/opentype .woff
AddType application/x-font-woff .woff
AddType application/vnd.ms-fontobject .eot
AddDefaultCharset UTF-8
Options -Indexes

最后,我意识到虽然我下面的路径在本地主机上工作,但区分大小写的服务器不接受该路径

\js\prettyPhoto\js\jquery.prettyPhoto.js

代替

\js\prettyphoto\js\jquery.prettyPhoto.js

大写字母 p 犯了所有这些错误!对于您的情况,可能也是如此,因为您有“Uncaught SyntaxError: Unexpected token < ”和“资源解释为样式表但使用 MIME 类型 text/html 传输:”

让我知道是否有帮助:)

于 2013-08-24T01:42:36.073 回答