我正在使用mod_rewrite来清理我的一些网址(duh),我得到了它的工作。八九不离十。它重定向到正确的页面,但样式表没有显示。这是我在.htaccess中的代码:
RewriteEngine on
RewriteRule ^blog/([^/\.]+)/?$ post.php?page=$1 [L]
那是怎么回事?顺便说一句,这是我第一次使用mod_rewrite。
答案 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