WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

[РЕШЕНО] Заблокировать «?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 );
0
kolshix
20 февраля 2020 615
  • 0
    mi1329 trapeznaya.ucoz.ru

    Попробуй attachment-pages-redirect

    Комментировать
  • 0
    Andrew142 america-xix.ru

    используйте хук attachment_link

    в пользовательскую функцию передаются два параметра - url вложения и id вложения.

    Ссылка на страницу вложения будет заменена результатом выполнения функции. Это может что угодно, хоть ссылка на главную, хоть url вложенного медиафайла (в примере по ссылке именно так), хоть вообще ничего.

    kolshix 2 Мар. 2020

    на удивление , код не сработал и показал неожиданны результат, если раньше срабатывал редирект со страниц с "attachment_id" на стандартный ЧПУ , то теперь пользователь остается на странице "attachment_id" ещё и правильное вложение открывается, хотя в условии стояла домашняя страница .

    Сейчас перезжаю потихоньку на php 7.4 + WP последнюю - - там посмотрю.

    Andrew 3 Мар. 2020

    где-то допущена ошибка при вызове функции. Проверьте в медиабиблиотеке, какие ссылки отображаются там, на слове "Перейти"

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация