正则表达式排除特定文件

时间:2011-12-26 13:11:03

标签: regex apache mod-rewrite

我有一个正则表达式,将文件夹“/ downloads”中的任何文件重定向到PHP脚本,然后PHP脚本提供文件(以及其他内容)。但是,我想在那里有一些我可以查看的PHP文件,而不是让它们下载(显然也是一个安全问题)。但是,我对正则表达式知之甚少。我正在寻找它,但没有把它弄好:(

<IfModule mod_rewrite.c>
RewriteEngine on

#Redirect any file coming in to the downloads manager
RewriteRule ^(.+\.*) /downloads?file=$1 [R,L]
</IfModule>

到目前为止我唯一可以找到的工作是RewriteRule ^(.+\.php)$ - [L]。但是,这不起作用。如果有人能够快速解释这个问题,或者给我一些特定的工作,那就太棒了! 此外,您可能已经想到这个重定向到/ downloads文件夹的index.php。如果你能解释它为什么不下载自己,那就太好了。当我去download / index.php时它会下载,但不是简单/下载。没有必要的信息让它工作,但想知道:)
感谢您的回复。

1 个答案:

答案 0 :(得分:0)

使用RewriteCond禁止您不想要的匹配:

RewriteCond %{REQUEST_URI} !\.php$
RewriteRule (.*) /downloads?file=$1 [R]

(我删除了L,因为它在这里没有任何用处)