Php mod_重写导致样式表丢失

Php mod_重写导致样式表丢失,php,apache,mod-rewrite,Php,Apache,Mod Rewrite,我正在使用mod_rewrite来清理我的一些URL的duh,我让它工作起来了。索塔。它会重定向到正确的页面,但样式表不会显示。以下是我在.htaccess中的代码: RewriteEngine on RewriteRule ^blog/([^/\.]+)/?$ post.php?page=$1 [L] 发生了什么事?顺便说一句,这是我第一次使用mod_rewrite。您的CSS假设/blog/style.CSS将发布.php?page=style.CSS 为了解决这个问题,我建议把它放在引擎

我正在使用mod_rewrite来清理我的一些URL的duh,我让它工作起来了。索塔。它会重定向到正确的页面,但样式表不会显示。以下是我在.htaccess中的代码:

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

发生了什么事?顺便说一句,这是我第一次使用mod_rewrite。

您的CSS假设/blog/style.CSS将发布.php?page=style.CSS

为了解决这个问题,我建议把它放在引擎后面

RewriteCond %{SCRIPT_FILENAME} -f
RewriteCond %{SCRIPT_FILENAME} -d
这将把所有存在该文件的请求(如CSS/JS文件)直接转发到该文件


将来,我建议在浏览器上浏览URL,看看它会把你带到哪里。如果它在浏览器中不起作用,那么它在页面上就不起作用。

可能是您的新URL导致相对URL的解析方式与旧URL的解析方式不同。使用如下绝对URL路径进行尝试:

/style/screen.css
而不是相对URL路径,如:

style/screen.css
./style/screen.css

如果您使用的是相对链接,则可能是您的CSS链接被新URL破坏。e、 g:

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

这个中断也会影响图像。 解决这个问题的一个简单方法是确定CSS的最终URL并将其绝对链接。e、 g

/css/stylesheet.css

这意味着,不管您在结构中的位置如何,如果您按照此例程操作,CSS或图像都会显示为ok。

ok,现在样式表位于/style/stylesheet.CSS的inits自己的目录中,这会改变什么吗?我照你上面说的做了,它给了我一个404错误。另外,我不明白为什么它不起作用,因为当我转到它真正要去的URL时,它工作得非常好。它不是基本上只是做一个重定向,因此就像进入实际页面一样吗?困惑…如果你浏览到some.thing.com/style/stylesheet.css,你明白了吗?如果是这样的话,你的HTML页面应该和你浏览标签中的CSS页面有相同的URL。