2016-07-29 8 views
0

私のウェブサイトを私のウェブスペースのルートフォルダに入れないようにしてください! 。 これの目的は、ウェブを介してアクセスできないフォルダを作成することである(例えば、安全なファイル、ダウンロード)ウェブサイト全体をサブフォルダにリダイレクト

私はリダイレクトするように試みたが、私はそれが100%に

例を仕事に取り掛かるいけません。この作品

<ifmodule mod_rewrite.c> 
    RewriteEngine On 
    RewriteRule ^(.*)$ /web/$1 [L,NC] 
</ifmodule> 

非常によくurl.comリダイレクトトンを取得します。

-root 
--downloads 
--web 
---f1 
--.htaccess 

私のhtaccessファイルは

o url.com/web住所ラインのURLを変更しないでください。

が、ここでの問題は、私はいけないものを、とすぐに私はそれがurl.com/web/f1にリダイレクト(およびとして表示)を取得しますurl.com/f1のようなフォルダにアクセスしようとして を開始アドレス行に表示されます。

さらに、私はまだ誰かがこの問題を解決するために熱い私に説明してください、または何ができ、私はurl.com/web/downloads

にリダイレクトされることが予想url.com/downloadsにアクセスすることができますこれを達成する正しい方法。

+0

'downloads'または' f1'などのフォルダがウェブ/ ''の下ではないでしょうか? – anubhava

答えて

0

これの目的は、ウェブ を介してアクセスできないフォルダを作成することです。(例えば、安全なファイル、ダウンロード)

だから最初の問題のために、あなたはあなたのフォルダを移動する必要がルートの外側。それがそれらを安全にする最良の方法です。このような構造で。

--downloads 
--f1 
--root 
    -- web 

ブラウザ内では絶対にアクセスできず、このための再書き込みは必要ありません。

ここで、バックエンドコードを使用してファイルを取得し、許可されている場合はダウンロードすることができます。あなたはあなたが使っていることを言っていない、私はPHPの例を提供します。

このようなコードを使用してダウンロードを強制することができます。以下のリンクを例として、DBを使用しても構いません。

<?php 

ignore_user_abort(true); 
set_time_limit(0); // disable the time limit for this script 

$path = "/home/username/downloads/"; // change the path to fit your websites document structure 

$dl_file = preg_replace("([^\w\s\d\-_~,;:\[\]\(\).]|[\.]{2,})", '', $_GET['download_file']); // simple file name validation 
$dl_file = filter_var($dl_file, FILTER_SANITIZE_URL); // Remove (more) invalid characters 
$fullPath = $path.$dl_file; 

if ($fd = fopen ($fullPath, "r")) { 
    $fsize = filesize($fullPath); 
    $path_parts = pathinfo($fullPath); 
    $ext = strtolower($path_parts["extension"]); 
    switch ($ext) { 
     case "pdf": 
     header("Content-type: application/pdf"); 
     header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\""); // use 'attachment' to force a file download 
     break; 
     // add more headers for other content types here 
     default; 
     header("Content-type: application/octet-stream"); 
     header("Content-Disposition: filename=\"".$path_parts["basename"]."\""); 
     break; 
    } 
    header("Content-length: $fsize"); 
    header("Cache-control: private"); //use this to open files directly 
    while(!feof($fd)) { 
     $buffer = fread($fd, 2048); 
     echo $buffer; 
    } 
} 
fclose ($fd); 
exit; 

http://www.web-development-blog.com/archives/php-download-file-script/

関連する問題