2010-08-07 151 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