2017-05-04 54 views
1

我有.htaccess文件:的.htaccess访问指定文件

DirectoryIndex index.php 
RewriteEngine on 
RewriteRule ^play/([^/\.]+) index.php?task=view&name=$1 [L] 

显示网页游戏。

我的问题:当我需要加载一些文件(或地址栏访问)与路径:/play/Assest/file-name.swf。这返回404错误。

我如何可以访问文件,但不改变以上RewriteRule

我试图重定向代码,但它不工作:

RewriteRule ^/play/Assets/file-name.swf ^/games/Assets/file-name.swf [R=301,L] 
+1

“......但不改变上述重写规则?” - 这是为什么?你无法更改代码吗?或者你担心它可能会改变功能? – MrWhite

回答

1

RewriteRule缺少锚的所以部分匹配仍然会被重写。添加$这样的:

RewriteRule ^play/([^/.]+)$ index.php?task=view&name=$1 [L] 

Shahaf的答案也可以帮助你(虽然这意味着文件系统获取每一个请求,从而影响性能轮询两次),但这个上面你说的“只有比洞赛/与任何东西,但点或正斜杠它后面”,这似乎是你的意思。如果没有美元可以有后任何东西,仍然匹配,因为你已经找到。

我也删除这是没有必要的字符类点的转义。

+0

这项工作!非常感谢你! –

1

重写规则之前,您应该添加条件,如果它不是一个文件或目录

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d