我正在创建一个单页应用程序。当用户更改网址或重新加载时,“mysite.com/”之后的任何内容都会作为变量发送到ajax请求的子目录内容(例如/ users / me)
当相对url只有一个“子目录”时,此代码很有用。 但是子子目录,甚至只是“子目录/”,会收到错误并且不加载任何内容。
资源解释为样式表,但使用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内部服务器错误,但在这种情况下,不会加载内容并抛出上述错误。
更新:我有一堆脚本位于“scripts”文件夹中,该文件夹与index.html和.htaccess位于同一目录级别。它们都加载没有错误,也许问题是.htaccess不适用于自己目录级别的文件?
答案 0 :(得分:0)
修正:好的,所以我让它运转了。客户端会挂起,因为它找不到我引用的jquery和css文件。我在想当发生的事情是当服务器读取并加载index.html时,它就行了
<script src="default.css"></script>
<script src="jquery.js"></script>
由于它们不是对其文件位置的硬引用,因此找不到它们并且htaccess将请求重新路由回index.html,它继续循环到无限,导致浏览器挂起。
只需将所有“真实”文件引用更改为非相对链接即可解决问题
e.g。
<script src="http://www.mysite.com/default.css"></script>
愚蠢的是,这是解决方案,但我想问题可能很难,因为答案太简单而无法注意到