2010-08-07 124 views

回答

1
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/?$ index.php?clip=$1 

我不會建議這種技術,因爲它會導致一個額外的磁盤讀取,以檢查該文件是否存在... 如果有我會建議組織的方式你的目錄結構的可能性, Apache可以從目錄中知道該做什麼。從我的框架中的例子:

# skip whitelisted directories 
    RewriteRule ^(test|skin|stylesheets|images|javascripts|favicon|robots\.txt|index\.php) - [L] 
    RewriteRule ([-_\w\/]*) index.php?p=$1 [NE,NC,QSA] 
0

您匹配任何不包含「/」或「。」的字符串。如果你想比賽進行到包括擴展,可以使用:

RewriteRule ^([^/]+)/?$ 

如果你不關心它:

RewriteRule ^([^/.]+) 
+0

這與jordanstephens答案一起使完美。謝謝! – Codecat 2010-08-07 14:12:52

1

試試這個代碼:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/?$ index.php?clip=$1 

這將防止它忽略服務器上真正存在的文件。所以http://example.com/abcdefg.png將工作,只要/abcdefg.png存在。

此外,您在重寫規則中使用的正則表達式需要稍微更改,我刪除了.,因爲您正在阻止它。

+0

閱讀評論我添加到nhnb。謝謝! :) – Codecat 2010-08-07 14:13:23