2015-11-05 2 views
1

У меня возникли проблемы с перенаправлением 404 (неправильных запросов URL) на 404 страницу (404.php), которую я разработал и загрузил на сервер.Перенаправление на пользовательскую страницу 404 в домашнем каталоге

У сервера есть установка Wordpress в подпапке/блоге, и все 404 перенаправляются на страницу 404 блога Wordpress. Я настроил перенаправление в .htaccess, но не работает.

ErrorDocument 404 /404.php 

Это то, что я добавил в .htaccess, но он по-прежнему перенаправляет блога 404 вместо 404 страницы в корне.

Как я могу отменить это?

ответ

0

прежде всего убедитесь, что 404.php присутствует в надлежащем месте и http://www.example.com/404.php работает исправно.

если оба 404.php и .htaccess присутствуют в одной и той же корневой папке, а затем попробуйте изменить следующую строку в файл .htaccess

ErrorDocument 404 /404.php

в

ErrorDocument 404 /root/404.php

1

в моем понимании ErrorDocument 404 /404.php будет работать, только если не указано правила перезаписи .htaccess например:

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 
# END WordPress 

Поскольку wordpress имеет собственный life cycle, который использует URL-адрес перезаписи в .htaccess, чтобы определить, какой запрос страницы подходит. У WordPress есть основной механизм для понимания текущего запроса. Например, вы создали имя страницы hello-word, когда вы переходите на http://your_wordpress.com/hello-word wordpress определяет hello-world из URL-адреса и находите в его базе данных, есть ли у него hello-word страница или нет. Если текущая страница не существует в базе данных, тогда механизм автоматически вызывает шаблон темы 404, который находится в текущей активной теме.

Решение

Создайте файл в wp-content/themes/YOUR-THEME/404.php и изменить его содержание. Вам не нужно указывать ErrorDocument 404 /404.php в .htaccess. Подробнее о создании 404 шаблона here

+0

ОК. Но у меня есть другой шаблон и другой сайт в корне. И я не хочу, чтобы он перенаправлялся к wordpress 404. Есть ли способ переопределить перенаправление wordpress в .htaccess? – AeJey

1

я достиг его, вставив этот код на вершине моей темы WordPress в header.php файл

if (is_404()) { 
     wp_redirect('../404.php'); 
     exit; 
    } 

А теперь корень/основной сайт 404 страница становится загружен вместо 404 страница блога Wordpress, как и предполагалось. :)