2013-03-11 116 views
0

了htaccess的重写我的链接,这样更好的SEO:的.htaccess的mod_rewrite挡住了我的CSS

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,但使用

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] 

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

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

请尝试使用'。* /([^ /。] +)/?'。您的规则可能与css和图像文件匹配。因为文件扩展名包含一个点,所以不要在重写中允许点防止这种情况。 – Gerben 2013-03-11 19:15:03

+0

不适用于example.com/aaaa,仅适用于example.com/aaa/bbb等 – user1590642 2013-03-11 19:32:48

回答

1

您必须排除使用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] 
+0

对于'jpe?g' +1,以前从未想过,我总是使用'jpeg | jpg'并且已经绞尽脑汁寻找更整洁更干净的东西 – bizzehdee 2013-03-11 21:18:22

+0

@bizzehdee谢谢你,我从别的地方采纳了它。不过,jpeg | jpg'没什么问题。 – 2013-03-11 21:23:04

0

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

如果您的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是在根目录的目录。