2016-07-29 10 views
0

Ich möchte nicht, dass meine Website im Stammordner meines Webspace ist! Das Ziel ist es, einen Ordner zu erstellen, die nicht über das Web (zB sichere Dateien, Downloads)ganze Website in Unterordner umleiten

Ich habe versucht zu umleiten, aber ich nicht bekommen es 100%

Beispiel zu arbeiten.:

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

meine .htaccess-Datei:

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

diese url.com wird umgeleitet t ziemlich gut funktioniert o url.com/web ohne die URL in der Adresszeile zu ändern.

aber hier fangen die Probleme an sobald ich versuche, einen Ordner wie den Zugriff auf url.com/f1 es umgeleitet wird (und angezeigt), url.com/web/f1, was ich möchte nicht in der Adresszeile angezeigt werden.

außerdem kann ich immer noch Zugriff auf url.com/downloads, die ich zu url.com/web/downloads weitergeleitet zu erwarten

kann jemand mir bitte erklären, heiße dies zu beheben, oder was ist der richtige Weg, dies zu erreichen.

+0

Sollte nicht 'downloads' oder' f1' etc Ordnern befinden sich unter 'web /'? – anubhava

Antwort

0

Das Ziel ist es, einen Ordner zu erstellen, die nicht über die Bahn. (ZB sichere Dateien, Downloads)

Also für Sie erstes Problem, müssen Sie Ihre Ordner verschieben außerhalb der Wurzel. Das ist der beste Weg, sie zu sichern. Mit einer Struktur wie dieser.

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

Dann gibt es absolut keine Möglichkeit, sie erreichen es innerhalb des Browsers und Sie brauchen keine Schreibmaschinen dafür.

Jetzt können Sie einfach Ihren Backend-Code verwenden, um die Datei abzurufen und dann dem Benutzer zu erlauben, sie herunterzuladen, wenn sie autorisiert sind. Du hast nicht gesagt, was du benutzt hast, also werde ich ein PHP-Beispiel bereitstellen.

Sie können dann Code wie diesen verwenden, um den Download zu erzwingen. Sie können den folgenden Link für das vollständige Beispiel verwenden und auch DB verwenden.

<?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/

Verwandte Themen