2013-03-11 97 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是在根目錄的目錄。