.htaccess RewriteEngine打破了CSS / Images

时间:2011-07-22 17:20:54

标签: php .htaccess rewrite

我成功地重写了我的脏网址以清理网址,但这也破坏了我的图像和样式文件夹:(

RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)$ /www/index.php?page=$1&cmd=$2 [L]

2 个答案:

答案 0 :(得分:5)

添加以下重写条件,以防止重写导致现有文件和目录的URL,例如:你的JS,CSS和图像文件。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)$ /www/index.php?page=$1&cmd=$2 [L]

如果您的图片仍未显示,可能是因为您要包含以下图片:<img src="./img/myimage.png" />。如果您现在将浏览器指向http://site.com/page/hello/,则您的浏览器将在此处查找图片:http://site.com/page/hello/img/myimage.png。但是,图片实际上在这里:http://site.com/img/myimage.png

因此,您必须包含以下图片:<img src="/img/myimage.png" />(域名之后的所有内容)。 这将迫使浏览器看到正确的位置。 (假设你的目录结构是这样的。)

答案 1 :(得分:0)

这可能是因为你的风格现在也是index.php。我的意思是

/styles/myStyle.css -> /www/index.php?page=styles&cmd=myStyle.css

所以你应该通过重写一些URL来解决这个问题。像这样的东西?

RewriteRule ^pages/([^/]*)/([^/]*)$ /www/index.php?page=$1&cmd=$2 [L]