Создайте обычную страницу с ярлыком 404 и собственным шаблоном.
Подскажите пожалуйста по поводу 404
Есть две установленных копии ВП с разными базами, одна в корне /, вторая в каталоге /wp и открываются в браузере по адресам site.ru и site.ru/wp соответственно
В корне есть .htaccess и в нем есть два модуля:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
и
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wp/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp/index.php [L]
ErrorDocument 404 /wp/index.php?error=404
</IfModule>
Вопрос в том, что показывается 404 от коренного движка на любую несуществующую страницу — как на первый движок site.ru/blablabla, так и на второй site.ru/wp/blablabla, и даже на другие движки, например smf на том же сервере site.ru/forum/blabla
Как мне правильно сделать отображение 404 из темы /wp на соответствующей странице?
Создавал в /wp/.htacces строки второго модуля — не помогает. Собственно, даже отсутствие этого файла в /wp картины не меняет, видимо всем рулит коренной, но он дает 404 не от нужного движка.
Уточню:
Если второй модуль я убираю из корневого .htaccess — в отсутсвующих страницах /wp отображается 404 коренного движка
Если создаю /wp/.htaccess и в нем прописываю второй модуль — отображается белая страница без единой строки кода или ошибки
Atrax
(@atrax)
Ethical engineer
Есть две установленных копии ВП с разными базами, одна в корне /, вторая в каталоге /wp и открываются в браузере по адресам site.ru и site.ru/wp соответственно
А мсье знает толк в извращениях…
Про файл понял, но где в коде подправить, чтобы если страницы нет, то подгружать «вот эту» страницу …
где в коде подправить, чтобы если страницы нет, то подгружать «вот эту» страницу …
Можно добавить фрагмент в functions.php активной темы:
function redirect_404() {
if ( is_404() && $_SERVER['REQUEST_URI'] != '/404/' )
wp_redirect('/404/');
}
add_action('template_redirect', 'redirect_404');
Sergey Biryukov, спасибо огромное. Все заработало.
Таким образом будет soft 404 (код ошибки наверное вообще 200 вернется), а это ни Googlge ни Яндекс не любят.