2013-10-10 72 views
1

我有一个目录结构: 的httpdocs /文件/文件夹1 的httpdocs /文件/文件夹2 的httpdocs /文件/ folder3htacess配置不正确配置

等于httpdocs /文件我有一个.HT访问文件:

RewriteEngine on 
RewriteRule ^(.*).(PDF)$ fileopen.php 

,并在此文件夹中我有fileopen.php

这个文件然后打开在文件夹1 PDF文件取决于由HTTP文件请求发送$ _Get请求folder3 docs文件夹。

我希望htaccess文件限制对所有文件夹的访问,但允许fileopen.php请求的任何pdf被下载和打开。这是可能的原因,我不能得到它的工作。

感谢

回答

0

虽然可以使用mod_rewrite规则来阻止它。我想最简单和健壮的解决方案是移动folder1, folder2, folder3以外DOCUMENT_ROOT

然后你可以有httpdocs和一个新的pdfdir在同一级别。然后pfdir可以包含folder1, folder2, folder3

事情是这样的:

---> httpdocs/ 
----------> .htaccess 
----------> fileopen.php 
----------> documents/ 
---> pdfdir/ 
----------> folder1/ 
-------------------> foo.PDF 
----------> folder2/ 
-------------------> bar.PDF 
----------> folder3/ 
-------------------> baz.PDF 

这样pdfdir及其内容从网页无法访问,您index.php仍然可以使用fopen等文件中的函数访问它们。

+0

我不想使用webroot以外的东西,但想要尝试使htaccess工作 - 但我放弃了把它放在webroot之外是非常简单的,就像你说强大的感谢 – user1616338

+0

不客气,保持这些文件以外是比任何其他解决方案更安全。 – anubhava

0

尝试这样:

RewriteEngine on 
RewriteRule ^(.*).(PDF)$ fileopen.php?file=$1 [L] 
RewriteRule ^(folder1|folder2|folder3) - [L,F] 
+0

这种工作,但加载时的PDF是空白 – user1616338

+0

@ user1616338它取决于你的'fileopen.php'脚本[返回正确的内容类型](http://stackoverflow.com/questions/312230/proper -mime-media-type-for-pdf-files)然后读取并输出pdf文件。 –