6

こんにちは私は自分のウェブサイトを開発するために codeigniter を使用しましたが、私のウェブサイトが google で検索されると、Google は特定のフォルダー内のファイル (pdf) へのリンクを表示し、ユーザーはログインせずにこれらのファイル (pdf) を直接表示できます。これらのファイルへのリンクを直接表示するように Google を制限したい。例: www.mywebsite/myfolder/myfile

どうすればこれを達成できるか教えてください。ありがとうございました。

4

3 に答える 3

7

前の回答から少し変更:

.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();
}

次に、次のように、config フォルダーの routes.php ファイルに行を追加する必要があります。

$route['my_files/(:any)'] = "my_controller/index/$1";

これにより、myfiles/bla_bla_bla へのすべてのリクエストが my_controller/index/bla_bla_bla にリダイレクトされます

これが役立つと思います:)

于 2012-11-10T13:23:47.883 に答える
0

基本的に、ファイルを 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);
               }
            }
        }
    }
}

注: ディレクトリの横断に注意する必要があります。そのため、ファイル名が文字のみで構成されていることを確認する必要があります。

于 2012-09-03T11:57:48.293 に答える