【问题标题】:mod_rewrite strange behaviour when url with two subdirectories带有两个子目录的 url 时的 mod_rewrite 奇怪行为
【发布时间】:2012-10-24 00:11:59
【问题描述】:

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

好的,在这种方式下一切都很好,但为了实现这一点,我需要将每个请求重定向到我的页面到 index.php,该 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/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

感谢您的帮助。

【问题讨论】:

  • 是什么引发了这个错误?您很可能不想通过 PHP 传递静态资源,例如 JavaScript 文件。
  • 我有一个 header.php 和一个 footer.php,它们加载了典型的 head 标签和页脚的所有内容以供重用。这是一个坏习惯吗?如果是……怎么解决?
  • 这是一个不同的问题,它取决于网站。这是最简单的方法,因此在保证额外的复杂性之前肯定不是一个的做法,但这不应该在这个问题中讨论。回到主题:您的重写规则应该允许您的 Web 服务器直接提供图像、js 和 css。
  • 我不熟悉重写规则,我在网上看东西,但看起来很混乱。你能给我一个方法吗?

标签: php javascript ajax .htaccess mod-rewrite


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-02-03
    • 2019-02-19
    • 2016-07-13
    • 1970-01-01
    • 2014-08-17
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多