我创建了一个简单的htaccess规则来重写/ jobs / 24到index.php?job = 23
但由于某些原因,这似乎打破了我的整个网站,我的css规则或js文件都不再适用了。
什么可能导致这个问题?
我经常环顾四周,尝试了一些不同的解决方案,但似乎没有任何效果
答案 0 :(得分: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>
答案 1 :(得分:0)
很可能您的文件不再被找到,因为所有内容都被重写了。您可以为所需文件添加例外,也可以排除整个目录。
要排除整个目录,只需在该文件夹中创建以下.htaccess
文件:
rewriteEngine off
要排除某些路径,请将其置于原始.htaccess
:
RewriteRule ^(dir1¦dir2¦dir3) - [L]
您可以使用Firebug进行测试,例如,网络标签会显示任何无法加载的文件。
答案 2 :(得分:0)
重写规则也适用于css和javascript网址。看看那些,看看它们是否与重写规则中的模式相匹配。如果是,请使用重写条件排除它们。 See the documentation for details.