当具有两个子目录的url时,mod_rewrite奇怪的行为

时间:2012-10-21 15:54:13

标签: php javascript ajax .htaccess mod-rewrite

我正在使用php,html5和javascript开发一个web项目。现在我在用户刷新页面时使用php来处理URL,以便捕获子目录并重新计算页面内容(因为我使用的是ajax所以需要它。)

好的,everithing在这种方式下工作得很好,但为了实现这一点,我需要将每个请求重定向到我的页面到index.php,它调用另一个名为controller.php的文件。 为此,我使用以下.htaccess代码:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/index\.php -f
RewriteRule ^(.*)$  /MySubDirectory/index.php [QSA]

我正在localhost上测试它,所以对于以下模式:

localhost/MySubDirectory/
localhost/MySubDirectory/something

它可以工作,但是当我添加一个新文件夹时:

localhost/MySubDirectory/something/somethingelse

我在css和javascript导入上出现了奇怪的错误

Uncaught SyntaxError: Unexpected token < jquery-1.8.2.min.js:1
Uncaught SyntaxError: Unexpected token < jquery-ui-1.9.0.min.js:1
Uncaught SyntaxError: Unexpected token < SpriteAnimation.js:1
Uncaught SyntaxError: Unexpected token < Bile.js:1

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

问题不在mod_rewrite上,而是在引用资源的链接上。它们被视为重定向子目录中的相对路径,这使得这些资源无法加载。 我通过用斜杠开始每个资源(javascript,css和图像)来解决它,使它们成为绝对路径而不是之前的相对路径。