Поддержка Проблемы и решения На правах багрепорта: 404.php

  • При стандартных настройках ЧПУ не всегда подгружается шаблон ошибки 404. Например, ссылка вида domain.ru/?p=wrong покажет страницу с шаблоном. Но ссылка domain.ru/wrong отправит посетителя на стандартную «404 Not Found» без оформления.

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Да, похоже на баг. Для несуществующих цифровых ID вовращается 404:
    http://core.trac.wordpress.org/ticket/12250

    Но буквенное (некорректное для p) значение заменяется на 0 и игнорируется.

    Можно обойти фрагментом в functions.php:

    function validate_post_id($query_vars) {
    	if ( !empty( $query_vars['p'] ) && $query_vars['p'] !== absint( $query_vars['p'] ) )
    		$query_vars['error'] = '404';
    
    	if ( !empty( $query_vars['page_id'] ) && $query_vars['page_id'] !== absint( $query_vars['page_id'] ) )
    		$query_vars['error'] = '404';
    
    	return $query_vars;
    }
    add_filter('request', 'validate_post_id');

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    отправит посетителя на стандартную «404 Not Found» без оформления

    Похоже, я о другом подумал.

    Шаблон у меня отображается в обоих случаях. Но в первом — просто главная страница (без ошибки), а во втором — 404.php.

    На тестовом домене стоит чистый движок.
    Адрес http://test.apelsinova.ru/?p=1884444 (не существует) выдаёт страницу из шаблона.
    Адрес http://test.apelsinova.ru/1111111 (не существует) выдаёт страницу без шаблона. И так происходит всегда, когда ЧПУ установлены по-умолчанию. Если поставить любой вариант — второй адрес тоже будет выдавать страницу по шаблону. Если вернуть обратно на стандартный — снова базовая страница без оформления.

    P.S.: Мне вопрос решать не нужно, у меня ЧПУ настроены на рабочем сайте. Написала на случай, что кто-нибудь не поленится написать репорт разработчику.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    И так происходит всегда, когда ЧПУ установлены по-умолчанию

    В этом случае до WordPress управление не доходит (т.к. нет правил в .htaccess), страницу ошибки возвращает сам сервер.

    Точно так же при стандартных ЧПУ WordPress не возвращает robots.txt:
    http://core.trac.wordpress.org/ticket/18841

    Со стороны WordPress тут вряд ли что-то можно сделать — стандартные ЧПУ на то и стандартные, чтобы работали без .htaccess.

    Это понятно. Но это не очень хорошо, как мне кажется.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Проблему можно решить ручным добавлением в .htaccess правил WordPress (структуру постоянных ссылок при этом можно оставить стандартной).

    Разумеется, можно. Но то, что при установке и стандартной настройке у движка есть проблемы, мне не видится правильным. Хотя, конечно, это сугубо моё субъективное мнение.

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • Тема «На правах багрепорта: 404.php» закрыта для новых ответов.