mod_rewrite导致样式表丢失

时间:2009-12-20 19:08:52

标签: php apache mod-rewrite

我正在使用mod_rewrite来清理我的一些网址(duh),我得到了它的工作。八九不离十。它重定向到正确的页面,但样式表没有显示。这是我在.htaccess中的代码:

RewriteEngine on
RewriteRule ^blog/([^/\.]+)/?$ post.php?page=$1 [L]

那是怎么回事?顺便说一句,这是我第一次使用mod_rewrite。

3 个答案:

答案 0 :(得分:4)

如果您使用的是相对链接,那么您的新网址可能会破坏您的CSS链接。 e.g:

使用的样式表链接:../css/stylesheet.css
旧页:/blog/example/post.php
新页面:/blog/2009/12/example/post.php

此中断也会影响图像。 解决这个问题的一个简单方法是确定CSS的确定URL和绝对链接。 e.g。

/css/stylesheet.css

这意味着无论您在结构中的哪个位置,CSS(或图像,如果您遵循此例程)都会显示确定。

答案 1 :(得分:2)

你的CSS(让我们假设/blog/style.css)将发布到post.php?page = style.css

要修复,我建议将其放在RewriteEngine

之后
RewriteCond %{SCRIPT_FILENAME} -f
RewriteCond %{SCRIPT_FILENAME} -d

这会将文件存在的所有请求(如CSS / JS文件)直接转发到文件。

将来,我建议浏览浏览器上的URL,并查看它引导您的位置。如果它在浏览器中不起作用,则它不适用于页面。

答案 2 :(得分:1)

可能只是您的新网址导致相对网址的解析与旧网址的解析方式不同。尝试使用这样的绝对URL路径:

/style/screen.css

而不是像:

这样的相对URL路径
style/screen.css
./style/screen.css