2011-07-23 58 views
5

我試圖使mod_rewrite對URL中的第一子目錄字符串,以便爲「jsfiddle.net類/ DB內保存的URL創建類似的功能。該腳本工作正常,並進行重寫。mod_rewrite的與尾部斜槓符CSS/IMG/SCRIPTS路徑

例如網址

http://jsfiddle.net/RyEue/ 

的這工作正常(負載所有的CSS,腳本等):

http://www.domain.com/787HHJ2 

這就是我在做的伎倆過去的習慣。

的問題,最後一個斜線,腳本,CSS和其他鬆散的路徑結束時的網址是。

http://www.domain.com/787HHJ2/ 

改寫腳本:

DirectoryIndex index.php index.html 
Options +FollowSymlinks 
RewriteEngine On # Turn on the rewriting engine 
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{QUERY_STRING} !. 
RewriteRule ^.+/?$ index.php [QSA,L] 

不能確定這是否與Rewritebase做,我嘗試過多種方式。

PS。我試過設置絕對路徑(例如src =「/ img/theimage.jpg」),但沒有運氣。

+0

規則是好的。請打開重寫調試('RewriteLogLevel 9')並檢查重寫日誌以查看到底發生了什麼。 – LazyOne

+0

@LazyOne,你的權利。有用。問題是它打破了CSS,腳本路徑。 – Codex73

+1

我澄清了這個問題。這個問題與CSS,腳本,圖像和其他人在使用尾隨/時被破壞最爲相似。 – Codex73

回答

5

1.確保你的CSS /圖像/ JS等掛鉤相對於根文件夾(與領先的斜槓):/styles/main.css

2.添加這些ruls的一個電流之前之一:

# do not touch files with .css/.js/.jpg etc extensions 
RewriteRule \.(css|js|jpg|png|gif)$ - [L] 

# do not touch any resources in images/css/js folders 
RewriteRule ^(images|css|js)/ - [L] 

3.清除瀏覽器緩存和重新啓動(有時瀏覽器可以顯示緩存頁面/資源時重寫規則固定帶來了很多困惑)。

+0

有了上述答案,我能夠解決這個問題。通過組合相對路徑以及設置本地虛擬主機,可以讓所有內容都能夠正常工作。 – Codex73

0

嘗試逃脫

RewriteRule ^.+\/?$ index.php [QSA,L]