• 解決済 d.w.c

    (@dwc-1)


    下記のコードを使って、投稿の特定のカスタムフィールドに入力された画像をデフォルトの年月ディレクトリ直下に生成したanother-folderディレクトリへ格納されるようにしています。

    例:/wp-content/uploads/2018/09/another-folder

    functions.php

    //対象のACFカスタムフィールドキー
    $fields = array(
      'field_A************', 
      'field_B************', 
      'field_C************', 
      // etc for each field
    );
    
    //$field_keyの数だけadd_filter()を作成
    foreach ($fields as $field_key) {
    	add_filter( 'acf/upload_prefilter/key=' . $field_key, 'customer_upload_prefilter' );
    }
    
    //該当のカスタムフィールドのみアップロード先の変更を適用
    function customer_upload_prefilter( $errors ) {
    	add_filter( 'upload_dir', 'my_custom_upload_directory' );
      
    	return $errors;
    }
    
    //アップロード先を変更
    function my_custom_upload_directory($param ) {
    	
    	  $folder = '/another-folder';
    	
    	  $param['path'] = $param['path'] . $folder;
    	  $param['url'] = $param['url'] . $folder;
    	  
    	  return $param; 
    }

    このanother-folderディレクトリの中身のみ、一切の外部からのアクセスができないようにしたいです。
    another-folder直下にdeny from allと書いた.htaccessを置けばいいらしいですが、このanother-folderディレクトリはデフォルトの年月ディレクトリの直下に自動生成され続けるので、事前に作って設置することもできず・・・

    another-folderディレクトリが新規に生成されるごとに.htaccessをその直下に自動生成するにはどうすればいいでしょうか?
    もしくは親階層の.htaccessで子孫ディレクトリへの直アクセスを禁止する方法があれば教えていただけると助かります。

    wpxサーバーで、another-folderの中身はjpeg,jpg,png,gif,pdfです。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック投稿者 d.w.c

    (@dwc-1)

    SetEnvIf Request_URI "/another-folder/" secure_dir
    Order Allow,Deny
    Allow from all
    Deny from env=secure_dir

    をルートディレクトリの.htaccessに記載することで、とりあえず誰も指定ディレクトリ内を表示できなくなりました。
    あとはこれをログインユーザーは以外は除外or内部アクセスなら除外の設定にできればいいのですが・・・

    • この返信は6年前にd.w.cが編集しました。
    トピック投稿者 d.w.c

    (@dwc-1)

    ログインユーザーは除外だと望んだ結果にならないですね。
    内部アクセスなら除外にしないといけないですが、やり方が見つけられません・・・。

    npssl

    (@npssl)

    wpxはサーバー側のキャッシュ等を最適化していると聞きますのでサーバーの運営に尋ねた方が確かじゃないでしょうか?

    トピック投稿者 d.w.c

    (@dwc-1)

    ルートディレクトリの.htaccessに下記のように記入することで
    『特定のディレクトリ内の画像のみ』を『外部からのアクセスを禁止』にすることができました。

    SetEnvIf Request_URI "/another-folder/" secure_dir
    SetEnvIf Referer "^http://サイトURL" ref_ok
    
    <Files ~ "\.(jpg|png|pdf)$">
    
    Order Deny,Allow
    Deny from env=secure_dir
    Allow from env=ref_ok
    
    </Files>

    手探りでやったのですが、記述方法にまずいところなどありますでしょうか?

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「自動生成ディレクトリの中身を外部アクセス禁止にしたい」には新たに返信することはできません。