Ошибка 404 на htaccess
-
Правильно ли я пропиcал код в файле .htaccess:
ErrorDocument 404 https://мой_сайт/wp-content/themes/the-core-parent/404.php RewriteCond %{REQUEST_URI} ^/мой_сайт.* RewriteRule . - [R=404,L,NC]
-
elimelech,
Правильно ли я пропиcал код в файле .htaccess
Нет 🙂
а где ошибка?
Попробуйте открыть
https://мой_сайт/wp-content/themes/the-core-parent/404.php
в браузере и посмотреть, что там выдаётся. Предполагаю, что ошибки PHP, связанные с отсутствиемget_header()
и других функций движка.Какую именно задачу вы хотите решить?
Шаблон
404.php
обычно используется самим движком без необходимости что-то прописывать в.htaccess
.но у меня
Код ответа несуществующей страницы 404
Получен код 200.При просмотре https://мой_сайт/wp-content/themes/the-core-parent/404.php в браузере вижу:
Fatal error: Call to undefined function get_header() in /public_html/wp-content/themes/the-core-parent/404.php on line 6
elimelech, если так принципиально, то можете с заголовком подшаманить, будет ответ 404.
если бы я умел шаманить. 🙁
elimelech,
вариант №1:
в файл 404.php можно добавить строчкуheader("HTTP/1.0 404 Not Found");
илиstatus_header(404);
вариант №2:
в файл functions.php дочерней темы или в функциональный плагин добавить код:function status_header_404(){ if( is_404() ) {status_header(404);} } add_action('wp_head', 'status_header_404');
Вот так?
<?php /** * The template for displaying 404 pages (Not Found) */ ?> <?php header("HTTP/1.0 404 Not Found"); ?> <?php get_header(); ?> <?php $the_core_sidebar_position = function_exists( 'fw_ext_sidebars_get_current_position' ) ? fw_ext_sidebars_get_current_position() : 'right'; ?> <div class="no-header-image"></div> <section class="fw-default-page fw-404-page fw-main-row <?php the_core_get_content_class( 'main', $the_core_sidebar_position ); ?>"> <div class="fw-container"> <div class="fw-row"> <div class="content-area <?php the_core_get_content_class( 'content', $the_core_sidebar_position ); ?>"> <h2 class="entry-title fw-title-404"><?php esc_html_e( '404 - Page Not Found', 'the-core' ); ?></h2> <div class="page-content"> <p><?php esc_html_e( 'It looks like nothing was found at this location. Maybe try a search?', 'the-core' ); ?></p> <?php get_search_form(); ?> </div><!-- .page-content --> </div><!-- /.content-area--> <?php get_sidebar(); ?> </div><!-- /.row--> </div><!-- /.container--> </section> <?php get_footer(); ?>
А если лучше сделать так?
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ - [L,R=404] ErrorDocument 404 /404.shtml RewriteRule . /index.php [L] </IfModule> # END WordPress
elimelech,
Вот так?
Можно и так, но лучше вариант №2.
А если лучше сделать так?
Лучше чем именно? Что вы свой костыль добавляете к костылю в виде .htaccess? 🙂 Дело-то ваше, если хотите так — сделайте, никто не запрещает.
вариант №2 не работает. 🙁
elimelech, в файл functions.php активной темы добавили код? Ссылку можно на сайт?
добавил по второму варианту в файл functions.php в теме The Core Child, сайт https://cpmiohio.com
У меня какие темы стоит родительская: 2)The Core Parent
2)активная: The Core Child, пишет что: This is a child theme of The Core Parent.* * *
в папке The Core Child нету файла 404.php, он есть тольок в папке The Core Parentelimelech, у вас сейчас все несуществующие страницы отдают почему-то главную страницу сайта — это раз. Два — у вас есть редирект на те же URL, только со слэшем в конце. Три — TTFB великоват и составляет ~3с.
The Core
В этом случае вообще не стоит трогать файлы темы, а следует обратиться в ТП вашей коммерческой темы, за которую вы заплатили при покупке.
п.9 правил форума.
- Тема «Ошибка 404 на htaccess» закрыта для новых ответов.