[РЕШЕНО] Заблокировать «?attachment_id=» redirect
по таким ссылкам можно спокойно парсить или нагружать или перебирать сайт на вложения
Как заблокировать такие адреса ??
пока подкрутил htaccess - но это плохой вариант для предпросмотра с user admin
RewriteEngine On RewriteCond %{QUERY_STRING} attachment_id RewriteRule ^.*$ https://site.com/? [R=301,L]
решил через код от плагина и немного подправил
WP 5.3.2, PHP 7+
/** * Handles redirection. */ function sar_attachment_redirect() { $attachment_id_name = $_GET['attachment_id']; global $post; if ( is_attachment() && isset($attachment_id_name) && isset( $post->post_parent ) && is_numeric( $post->post_parent ) && ( 0 !== $post->post_parent ) ) { $parent_post_in_trash = get_post_status( $post->post_parent ) === 'trash' ? true : false; if ( $parent_post_in_trash ) { wp_die( 'Page not found.', '404 - Page not found', 404 ); // Prevent endless redirection loop in old WP releases and redirecting to trashed posts if an attachment page is visited when parent post is in trash. } wp_safe_redirect( get_permalink( $post->post_parent ) ); // Redirect to post/page from where attachment was uploaded. exit; } elseif ( is_attachment() && isset( $post->post_parent ) && is_numeric( $post->post_parent ) && ( $post->post_parent < 1 ) ) { wp_safe_redirect( get_bloginfo( 'wpurl' ) ); // Redirect to home for attachments not associated to any post/page. exit; } } add_action( 'template_redirect', 'sar_attachment_redirect', 1 );
Попробуй attachment-pages-redirect
используйте хук attachment_link
в пользовательскую функцию передаются два параметра - url вложения и id вложения.
Ссылка на страницу вложения будет заменена результатом выполнения функции. Это может что угодно, хоть ссылка на главную, хоть url вложенного медиафайла (в примере по ссылке именно так), хоть вообще ничего.
на удивление , код не сработал и показал неожиданны результат, если раньше срабатывал редирект со страниц с "attachment_id" на стандартный ЧПУ , то теперь пользователь остается на странице "attachment_id" ещё и правильное вложение открывается, хотя в условии стояла домашняя страница .
Сейчас перезжаю потихоньку на php 7.4 + WP последнюю - - там посмотрю.
где-то допущена ошибка при вызове функции. Проверьте в медиабиблиотеке, какие ссылки отображаются там, на слове "Перейти"