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
10 месяцев назад 621
  • 0
    mi1356 trapeznaya.ucoz.ru

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

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

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

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

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

    kolshix 10 мес назад

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

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

    Andrew 10 мес назад

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

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