我知道.htaccess的基础知识,但是在涉及到mod_rewrite的时候,我承认自己是非专家。
问题是:我在文档根目录下有一个sqlite数据库文件(不,我不能移出它)叫做data.sqlite
。 这个文件是由PHP文件在内部访问的,但是我想保护这个文件不被用户直接在浏览器中input数据库的URL“下载”。
我曾经使用.htaccess创build漂亮的URL,并认为使用mod_rewrite将提供一个很好的解决我的问题。 但是,我的重写规则似乎并不妨碍访问。
的.htaccess
Options +FollowSymLinks Options -multiviews RewriteEngine On RewriteBase / RewriteCond %{http_host} ^www\.example\.com [NC] RewriteRule ^(.*)$ http://example.com/$1 [R=301,NC] ##prevent access to any file data.sqlite by redirecing back to index.php RewriteRule ^data.sqlite$ index.php [L,NC] ##my other rules follow - not shown here
任何想法,我要错误的重写? 我确定这是简单的事情?
编辑:
理想情况下,我想阻止直接URL访问以.sqlite结尾的所有文件,而不仅仅是data.sqlite
httpd禁止访问以.
开头的文件.
默认。 将你的文件重命名为.data.sqlite
,它将被处理。
下面是你如何做,因为我也做到了:
RewriteCond %{HTTP_REFERER} !^http://*.webwarecollection.com/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://*.webwarecollection.com$ [NC] RewriteRule .*\.(sqlite)$ - [F,NC]
关于“开始”。 那是不正确的! 文件必须从“.ht”开始,以在appache上默认被阻止。