你好,我已经使用笨来开发自己的网站,但是当我的网站在谷歌搜索,谷歌显示了链接到文件(PDF)在一个特定的文件夹中,用户可以直接不用登入查看这些文件(PDF)。 我想限制谷歌直接显示的链接,这些文件。 例如:www.mywebsite / MyFolder文件/文件MyFile
请指导我如何才能做到这一点。 谢谢。
你好,我已经使用笨来开发自己的网站,但是当我的网站在谷歌搜索,谷歌显示了链接到文件(PDF)在一个特定的文件夹中,用户可以直接不用登入查看这些文件(PDF)。 我想限制谷歌直接显示的链接,这些文件。 例如:www.mywebsite / MyFolder文件/文件MyFile
请指导我如何才能做到这一点。 谢谢。
从以前的小修改的答案 :
放置的.htaccess在您的文件夹与内容
order deny, allow
deny from all
这将拒绝所有访问该特定文件夹。
对于访问文件的编写一个函数在控制器与身体 -
public function index($file_name){
if($this->login()) // login check
if (preg_match('^[A-Za-z0-9]{2,32}+[.]{1}[A-Za-z]{3,4}$^', $file_name)) // validation
{
$file = 'my_path/'.$file_name;
if (file_exists($file)) // check the file is existing
{
header('Content-Type: '.get_mime_by_extension($file));
readfile($file);
}
else show_404()
}
else show_404();
}
那么你有一些线在你的配置文件夹添加到您的routes.php文件文件作为这样的
$route['my_files/(:any)'] = "my_controller/index/$1";
这将重定向所有请求myfiles的/ bla_bla_bla到my_controller /索引/ bla_bla_bla
认为这可能帮助:)
基本上你需要到主机上的文件的文件夹的public_html以外的 - 而是通过PHP ReadFile的为他们服务的对用户()。
像这样的东西会工作
function user_files($file_name = "")
{
// Check if user is logged in
if($this->user->logged_in())
{
// Now check the filename is only made up of letters and numbers
// this helps prevent against file transversal attacks
if (preg_match('^[A-Za-z0-9]{2,32}+[.]{1}[A-Za-z]{3,4}$^', $file_name)))
{
// Rewrite the request to the path on my server
$file = '../my_folder/'.$file_name;
// Now check if file exists
if (file_exists($file))
{
// Serve the file
header('Content-Type: '.get_mime_by_extension($file));
readfile($file);
}
}
}
}
}
注意:您要小心目录横移的 - 所以你应该把一些检查该文件名只由字母