我有这个(并且它有效):在Apache上使用PHP,我已经设置了htaccess来将所有通用友好/ urls / with / slashes路由到index.php。这是我的htaccess代码:
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
出于测试目的,我的index.php文件包含非常简单的HTML,其中包含指向正确路径的JavaScript文件的链接:
<!DOCTYPE html>
<html>
<head>
<title>A Test Page Goes Here</title>
<script src="foo.js" type="text/javascript"></script>
</head>
<body></body>
</html>
我正在调用的foo.js文件里面只有最简单的诊断:
console.log('howdy');
当我尝试使用正确的网址访问此网页时,如果没有调用重定向,则效果很好。像这样:
http://myhost/index.php
当我尝试使用ONE url参数访问此页面时,如下所示:
http://myhost/home
一切仍然按预期工作。出现该页面,JavaScript链接正常工作。
但是当我尝试使用更多网址来访问该网页时,如下所示:
http://myhost/pages/home
我收到两个错误,如下:
Uncaught SyntaxError: Unexpected token <
Resource interpreted as Script but
transferred with MIME type text/html: "http://myhost/home/foo.js".
当我使用浏览器的开发工具查看导致错误的JS代码时,这就是JS文件的内容所说的内容:我的index.php文件返回的HTML完全相同。 (所以,难怪会产生JavaScript错误。)
所以,告诉我的是,从我的HTML代码到foo.js的调用被重定向,并且正在返回index.php的内容而不是foo.js的内容。但只有在我的URL中有多个元素时才会发生这种情况。
顺便说一句,不只是JS不能正常工作......任何CSS文件的链接都会遇到同样的问题(它们会从index.php返回为HTML)。所以它似乎是链接和返回另一个文件,而不是它是什么类型的文件。所以......我很难过。我需要使用htaccess的一些技巧,我不是吗?任何人的想法?
答案 0 :(得分:0)
将您的HTML更改为以下内容:
<!DOCTYPE html>
<html>
<head>
<title>A Test Page Goes Here</title>
<script src="/foo.js" type="text/javascript"></script>
</head>
<body></body>
</html>