【问题标题】:htaccess rule breaks css / jshtaccess 规则破坏 css / js
【发布时间】:2011-10-11 15:42:23
【问题描述】:

我创建了一个简单的 htaccess 规则来将 /jobs/24 重写为 index.php?job=23

但由于某种原因,这似乎破坏了我的整个网站,不再应用我的 css 规则或 js 文件。

什么会导致这个问题?

我环顾四周,尝试了一些不同的解决方案,但似乎没有任何效果

【问题讨论】:

  • 能否请您也发布代码。
  • 您介意向我们提供您正在使用的确切重写规则吗?
  • 我的错,对不起,这是我在 RewriteRule ^jobs/([^/]+) index.php?job=$1 [NC] 上使用 Options +FollowSymlinks RewriteEngine 的规则

标签: javascript css .htaccess rewrite


【解决方案1】:

你的重写规则没有错。可能您只是不正确地处理您的 css/js 文件。

让我试着用一个例子来澄清我的意思。假设您的目录结构如下所示:

- index.php
- .htaccess
- js/
    - default.js

现在您在 index.php 中包含该 JS 文件

<script type="text/javascript" src="js/default.js"></script>

如果您直接调用 index.php,这将起作用 - 但如果您调用 jobs/24 并将其重写为 index.php,则不会。重写不是重定向!客户端不知道,仍然认为请求的文件在目录jobs 中。这意味着浏览器将在以下位置查找 default.js:/jobs/js/default.js

您可以使用绝对路径来避免此类问题:

<script type="text/javascript" src="/js/default.js"></script>

【讨论】:

  • 这没有多大帮助。此外,我发现使用文件的完整 url 有帮助
【解决方案2】:

您的文件很可能再也找不到了,因为所有内容都在重写。您可以为需要的文件添加例外,或排除整个目录。

要排除整个目录,只需在该文件夹中创建以下 .htaccess 文件:

rewriteEngine off

要排除某些路径,请将其放在原始 .htaccess 上方:

RewriteRule ^(dir1¦dir2¦dir3) - [L]

您可以使用 Firebug 进行测试,例如,net 选项卡会显示任何无法加载的文件。

【讨论】:

    【解决方案3】:

    重写规则也适用于 css 和 javascript url。看看这些,看看它们是否与您的重写规则中的模式匹配。如果有,请使用重写条件排除它们。 See the documentation for details.

    【讨论】:

      猜你喜欢
      • 2012-02-27
      • 2019-01-25
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      • 2012-03-02
      • 2019-03-05
      相关资源
      最近更新 更多