Ссылки на категории внезапно начали выдавать ошибки 404
Мой блог на Wordpress внезапно начал выдавать ошибки 404 при обращении к страницам категорий. Например, http://blog.rtwilson.com/category/tok-related/. Интересно, что это не происходит для дочерних категорий (таких как GIS и Remote Sensing, показанных в сайдбаре по указанной ссылке), но происходит для родительских категорий (например, Academic) и категорий без дочерних (как TOK-related).
У кого-нибудь есть идеи, почему это могло произойти? Недавно я изменил структуру постоянных ссылок для самих записей блога, но не для категорий. Нужно ли мне как-то перестроить список категорий? Если да, то как?
Обновление Содержимое файла .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.
И убедитесь, что изменения сохранились в файл .htaccess
. Если WordPress предупреждает, что файл .htaccess
недоступен для записи, вручную через FTP измените права доступа к файлу .htaccess
на 644 и попробуйте снова.
Точка перед именем файла означает, что это скрытый файл, поэтому проверьте настройки вашего FTP-клиента, чтобы он отображал скрытые файлы, если вы не видите файл .htaccess
в корневой директории сайта. Файл .htaccess
будет находиться в той же директории, что и файл index.php
, указанный в настройке "Адрес сайта (URL)" на странице общих настроек.
Стандартный блок перезаписи WordPress выглядит так:
# 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
Если вы получаете ошибку сервера 500, это означает, что кодировка файла неправильная и могла измениться при редактировании файла .htaccess. Вы можете попробовать переименовать текущий файл .htaccess и создать новый через FTP-клиент, назвав его .htaccess.
Если после сохранения постоянных ссылок и проверки наличия вышеуказанного блока перезаписи в файле .htaccess
у вас всё ещё возникают 404 ошибки или странное поведение, попробуйте добавить
global $wp_rewrite; $wp_rewrite->flush_rules();
в файл functions.php вашей темы, затем обновите главную страницу и удалите этот код. Это очистит правила перезаписи в кеше и временных данных.
Больше советов по устранению проблем и примеров вы найдёте в Использование постоянных ссылок « WordPress Codex

WordPress не выдал мне никаких предупреждений. Постоянные ссылки на записи блога работают нормально, проблема только со страницами категорий, и я не менял структуру постоянных ссылок для них!

Я прочитал это; но первым шагом в любом случае стоит пересохранить ваши постоянные ссылки.

Спасибо. Я пересохранил настройки постоянных ссылок и проверил файл .htaccess. Время изменения файла .htaccess соответствует моменту, когда я пересохранял настройки постоянных ссылок. Я добавил содержимое файла .htaccess в конец вопроса.

Попробуйте добавить global $wp_rewrite; $wp_rewrite->flush_rules();
в файл functions.php вашей темы, вернитесь и обновите главную страницу, затем удалите этот код.

@songdogtech Ответ содержит только ссылку. Возможно, стоит обновить его, так как он привлекает внимание читателей?

У кого-нибудь есть идеи, почему это могло произойти?
Я не получаю ошибку 404 на этой странице, но чтобы ответить на вопрос: я понятия не имею, почему это происходит или не происходит.
Я недавно изменил структуру постоянных ссылок для самих записей блога, но не для рубрик. Нужно ли мне как-то перестроить список рубрик?
Каждый раз, когда вы изменяете структуру постоянных ссылок в админке, они автоматически перестраиваются, так что вам не нужно об этом беспокоиться. И нет такой вещи, как перестроение списка рубрик, так что вам не нужно об этом задумываться.

У меня была такая же проблема - я установил плагин 'advanced permalinks', и в нем есть баг... Оказалось, что нужно закомментировать эту строку
$this->add_filter ('category_rewrite_rules');
в плагине. Оригинальный ответ не мой (хотя он помог и мне), взят отсюда

Я установил плагин "Advance Permalink" от John Godley 31 марта 2015 года для возврата к предыдущей структуре постоянных ссылок на http://punch2crunch.com
Через 36 часов все мои категории начали выдавать ошибки 404, и одна категория работала, но привязывалась к отдельной записи. Если у вас происходит то же самое, то вам нужно просто вставить одну вещь.
Следуйте шагам:
- Из админ-панели перейдите в раздел "Плагины", выберите "Редактор".
- Выберите "Advance-permalink/Advance-permalink.php"
Прокрутите вниз, пока не найдете следующий код:
$this->add_filter ('post_rewrite_rules'); $this->add_filter ('author_rewrite_rules'); $this->add_filter ('category_rewrite_rules'); $this->add_filter ('rewrite_rules_array');
Просто добавьте два слеша // перед строкой $this->add_filter ('category_rewrite_rules'); как показано ниже:
$this->add_filter ('post_rewrite_rules'); $this->add_filter ('author_rewrite_rules'); //$this->add_filter ('category_rewrite_rules'); $this->add_filter ('rewrite_rules_array');
Обновите ваш сайт, и всё снова начнёт работать идеально. Если нет, то придётся искать проблему в другом месте.

У меня была такая же проблема.
- Убедитесь, что модуль Apache rewrite включен и файл .htaccess настроен правильно
- Если предыдущий шаг не помог, перейдите в настройки постоянных ссылок и укажите базу для рубрик как "category"
- Некоторые SEO-плагины со своими правилами перезаписи URL могут вызывать проблемы
- Если у вас установлен плагин кеширования, очистите кеш

Это произошло со мной после того, как хостинг-провайдер перенес сайт на другой сервер. Решение, как markratledge указал выше, заключалось в том, чтобы "пересохранить постоянные ссылки в админке WordPress".
Подробная инструкция:
Войдите в админку вашего сайта на WordPress.
Перейдите в раздел Консоль → Настройки → Постоянные ссылки.
Если у вас выбрано "Название записи", выберите "Числовой" вариант и нажмите "Сохранить изменения".
Теперь снова выберите радио-кнопку "Название записи" и сохраните изменения.
Это должно пересохранить ваши настройки, после чего метки и рубрики должны заработать.
