如何将目录/文件的直接链接重定向到ubuntu中的php页面?

时间:2017-06-27 10:43:07

标签: php apache .htaccess ubuntu

我有一个简单的php文件,在让他看到内容之前建议登录用户,这实际上是视频文件的预览。

实际上视频文件位于php文件同一级别的目录中(假设videoDir),这样我就可以访问php文件了

http://someurl.com/index.php

和视频文件一样

http://someurl.com/videoDir/videoName.mov

http://someurl.com/videoDir/videoName2.mov

http://someurl.com/videoDir/videoName3.mov

现在,登录页面让用户正确登录,然后看到视频预览,但是,登录与否,用户将始终能够以这种方式下载他的直接网址(http://someurl.com/videoDir/videoName.mov)上的任何视频

所以我猜测是否可以将直接网址重定向到登录页面(可能是.htaccess?),最好的方法是什么?

您的信息:该页面位于Ubuntu上,由Apache管理。

2 个答案:

答案 0 :(得分:0)

首先,您需要禁用用户的目录列表。在您的目录中打开.htacess并输入下一行:

Options -Indexes
Order Deny, Allow
Deny from all
Allow from local

其次,在任何情况下,您的index.php都将作为本地脚本运行。然后,您必须检查登录状态并发送文件进行下载,如下所示:

// open the file in a binary mode
$name = './videoDir/videoName.mov';
$fp = fopen($name, 'rb');

// send the right headers
header("Content-Type: video/quicktime");
header("Content-Length: " . filesize($name));

// dump the picture and stop the script
fpassthru($fp);
exit;

您可以阅读fpassthru PHP function Documentation

答案 1 :(得分:-1)

.htaccess文件中添加以下行:

RewriteRule ^/file/(.*)   /handleFiles.php?path=$1  [L]

handleFiles.php文件内容将是:

<?php
$auth = 0;
if (!isset($PHP_AUTH_USER))
{
    header('WWW-Authenticate: Basic realm="Login"');
    header('HTTP/1.0 401 Unauthorized');
    print "you need to login";
    exit;
}
else
{
    if ($PHP_AUTH_USER == "UserName" and $PHP_AUTH_PW == "Password")
    {
        $auth=1;
        $file = implode('', file('/file/'.$path);
        print $file;
        exit;
    }
    else
    {
        header('WWW-Authenticate: Basic realm="Login"');
        header('HTTP/1.0 401 Unauthorized');
        print "you need to login";
        exit;
    }
}

if ($auth==0) {
    print "you need to login";
    exit;
}
?>