网址重写问题css搞砸了

时间:2011-06-16 21:57:38

标签: php mod-rewrite

基本上我试图这样做:

http://mydomain.com/1/1

http://mydomain.com/index.php?mid=1&mpid=1

我在htaccess中使用这些代码。

RewriteEngine on
RewriteRule ^([^/]+)/([^/]+) index.php?mid=$1&mpid=2 [NC]

它工作正常,但问题是css搞砸了,它没有加载css和图像。 什么解决方案?

5 个答案:

答案 0 :(得分:4)

问题是您的CSS不再相对于您网站的根目录。

您的index.php文件位于/,但当您重写为/1/1时,客户端认为您实际位于/1/1,并查找相对于/style/something.css的CSS文件那道路,应该如此。

您需要做的是在根目录/或其他任何地方引用您的CSS。只需确保在该路径的前面有{{1}}。

答案 1 :(得分:3)

使用base元素设置所有资源(CSS和图像等)的基本URL。这是文档:https://developer.mozilla.org/en/HTML/Element/base

<base href="http://www.yourdomain.com/">

此外,您的.htaccess可能会重定向CSS和图像的调用。将.htaccess更改为:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+) index.php?mid=$1&mpid=2 [NC]

...在执行任何重定向之前,将检查以确保所请求的文件(-f)和请求的目录(-d)不存在。

答案 2 :(得分:1)

可能存在两个问题:

CSS和图片根本没有加载

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$
RewriteRule ^([^/]+)/([^/]+) index.php?mid=$1&mpid=2 [NC]

或者图像现在有不同的路径。总是把斜线放在路径的开头,这会有所帮助。特别是在CSS文件中,路径是从CSS文件中获取的,而不是实际的URL。

答案 3 :(得分:0)

前置

RewriteCond %{REQUEST_FILENAME} !-f    # Existing File 
在你的RewriteRule之前的

- 它会阻止重写现有文件,比如css文件。

答案 4 :(得分:-2)

可能脚本发送了错误的Content-Type。 CSS数据需要Content-Type: text/css

PHP:

header("Content-Type: text/css");

使用像'.php'这样的文件扩展名,浏览器无法正确嗅探它。