基本上我试图这样做:
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和图像。 什么解决方案?
答案 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'这样的文件扩展名,浏览器无法正确嗅探它。