Поддержка Проблемы и решения Слеш в конце URL родительской страницы

  • Здравствуйте, форумчане!

    Прошу помощи решить такую проблему:

    На одном из сайтов требуется, чтобы все конечные страницы открывались с .html в конце. Это решено через хук «generate_rewrite_rules»

    add_action( 'generate_rewrite_rules', 'wpd_rewrite_rule', 99 );
    function wpd_rewrite_rule(){
    	
    	global $wp_rewrite;
    		
    	$new_rules = array(
    			'^(.+)?\/(.+)?\.html$' => 'index.php?pagename='. $wp_rewrite->preg_index(1) .'/' . $wp_rewrite->preg_index(2),
    			'^(.+)?\.html$' => 'index.php?pagename=' . $wp_rewrite->preg_index(1),
    		);
    	
    	$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
    	
    }

    Но теперь возникла загвоздка в следующем — нужно чтобы родительские страницы открывались без .html и со слешем в конце url.
    Если в админке добавить слеш в конце структуры ссылки, то соответственно и страницы с html тоже будут со слешем в конце.
    В частном случае на сайте всего 2 такие страницы, поэтому была попытка редиректнуть их через апач, но в таком случаем редирект зацикливается.
    Учитывая последнее, полагаю, что нужно правильно составить правило перезаписи для таких страниц. Но как это сделать не пойму.

    Заранее спасибо за любую помощь!

    P.S. Сразу отвечу на комментарии типа:
    — «это сео маразм»
    — «поисковикам, браузерам и пользователям все равно какой у вас URL»
    Я знаю и понимаю, но вот некоторые сеошники считают что это «жизненно» важно.

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Я знаю и понимаю, но вот некоторые сеошники считают что это «жизненно» важно.

    Вы не пробовали их бить? Можно ногами, до полного выбивания дури из головы.

    К сожалению они где-то далеко ))

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Если в админке добавить слеш в конце структуры ссылки, то соответственно и страницы с html тоже будут со слешем в конце.

    Это можно поправить с помощью фильтра page_link, как-то так:

    
    function my_page_link( $link ) {
    	return str_replace( '.html/', '.html', $link );
    }
    add_filter( 'page_link', 'my_page_link' );
    
Просмотр 3 ответов — с 1 по 3 (всего 3)