0

我正在创建一个单页应用程序。当用户更改 url 或重新加载时,“mysite.com/”之后的任何内容都作为变量发送到 ajax 请求的子目录内容(例如 /users/me)

当相对 url 只有一个“子目录”时,此代码效果很好。但是子子目录,甚至简单的“子目录/”,都会收到错误并且不加载任何内容。

  • mysite.com/sub_directory -------------- 导航到 mysite.com/index.html
  • mysite.com/sub_directory/ ------------- 抛出错误
  • mysite.com/sub_directory/sub-sub-directory --- 抛出错误

资源解释为样式表,但使用 MIME 类型 text/html 传输:“mysite.com/all/default.css”
资源解释为脚本,但使用 MIME 类型 text/html 传输:“mysite.com/all/jquery.js”


htaccess 尝试:将“mysite.com/”之后的任何内容重定向到 index.html。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . index.html [L]


附加信息:
.* 和 (^/?. $) 和 (^. /$)* 和 .*/ 等产生相同的结果
,包括 .css 和 .js 文件的 AddType 规则似乎什么都不做。
htaccess 文件与 index.html 位于同一文件夹中

这是一个正则表达式问题吗?通常当 htaccess 代码出现问题时,服务器会响应 500 内部服务器错误,但在这种情况下不会加载任何内容并抛出上述错误。

更新:我有一堆脚本位于“脚本”文件夹中,与 index.html 和 .htaccess 位于同一目录级别。它们都加载没有错误,也许问题是 .htaccess 没有应用于它自己的目录级别的文件?


4

1 回答 1

0

固定:好的,所以我让它工作了。客户端会挂起,因为它找不到我引用的 jquery 和 css 文件。我在想当服务器读取并加载 index.html 时发生的事情,它击中了行

<script src="default.css"></script> 
<script src="jquery.js"></script>

并且由于它们不是对其文件位置的硬引用,因此没有找到它们,并且 htaccess 将请求重新路由回 index.html,它继续循环到无限,导致浏览器挂起。

只需将所有“真实”文件引用更改为非相对链接即可解决问题

例如

<script src="http://www.mysite.com/default.css"></script>

愚蠢的是,那是解决方案,但我想问题可能很难,因为答案太简单而无法注意到

于 2014-02-10T03:18:09.467 回答