Htaccess mod_rewrite阻止了我的CSS

时间:2013-03-11 18:08:13

标签: css .htaccess mod-rewrite

让htaccess重写我的链接以获得更好的搜索结果:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI}  .*/([^/]+)/?     [NC]
RewriteCond %{REQUEST_URI}  !index\.php      [NC]
RewriteRule  .*      /index.php?cat=%1 [L,NC,QSA]

重写

http://www.example.com/any/number/of/directories/lastDir

为:

http://www.example.com/index.php?cat=lastDir

但是我的css不起作用,当我将htaccess上传到服务器时,只有纯文本没有图像和css

尝试将基本标记添加到html中,但它无法正常工作

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

3 个答案:

答案 0 :(得分:2)

您必须排除使用RewriteCond重写css和图像

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !\.(?:css|png|jpe?g|gif)$ [NC,OR]
RewriteCond %{REQUEST_URI} !index\.php [NC]
RewriteRule ([^/]+)/?$ /index.php?cat=$1 [QSA,L]

答案 1 :(得分:1)

尝试使用

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI}  .*/([^/]+)/?     [NC]
RewriteCond %{REQUEST_URI} !^(index\.php|robots\.txt|img|font|js|css|scripts) [NC]
RewriteRule  .*      /index.php?cat=%1 [L,NC,QSA]

这将过滤掉某些文件类型和目录,以确保资产不被重定向

答案 2 :(得分:1)

我也遇到了这个问题并找到了解决方案。

如果您的css / js文件与相对路径链接,您的RewriteRule也会影响它们。您可以通过使用根目录中的路径来避免这种情况,而不是编写RewriteCond。换句话说:

<link type="text/css" rel="stylesheet" href="css/style.css">

变为

<link type="text/css" rel="stylesheet" href="/css/style.css">

其中css是根目录中的目录。