Ссылки на категории внезапно начали выдавать ошибки 404

23 дек. 2010 г., 21:53:13
Просмотры: 15.5K
Голосов: 3

Мой блог на 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
2
Комментарии

Я не получаю ошибку 404 на http://blog.rtwilson.com/category/tok-related/

hakre hakre
24 дек. 2010 г. 04:36:56

Это обычные постоянные ссылки, и ваши категории теперь, кажется, работают.

markratledge markratledge
24 дек. 2010 г. 05:07:54
Все ответы на вопрос 6
6

Первое, что стоит попробовать — это пересохранить постоянные ссылки в админке 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

23 дек. 2010 г. 22:04:33
Комментарии

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

robintw robintw
23 дек. 2010 г. 22:07:32

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

markratledge markratledge
23 дек. 2010 г. 22:10:34

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

robintw robintw
23 дек. 2010 г. 22:38:57

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

onetrickpony onetrickpony
24 дек. 2010 г. 04:14:29

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

kaiser kaiser
15 мар. 2015 г. 14:42:15

@kaiser, Спасибо, хорошая идея. Обновил свой ответ; и заметил, что ссылка в принятом ответе не работает.

markratledge markratledge
15 мар. 2015 г. 18:33:38
Показать остальные 1 комментариев
0

У кого-нибудь есть идеи, почему это могло произойти?

Я не получаю ошибку 404 на этой странице, но чтобы ответить на вопрос: я понятия не имею, почему это происходит или не происходит.

Я недавно изменил структуру постоянных ссылок для самих записей блога, но не для рубрик. Нужно ли мне как-то перестроить список рубрик?

Каждый раз, когда вы изменяете структуру постоянных ссылок в админке, они автоматически перестраиваются, так что вам не нужно об этом беспокоиться. И нет такой вещи, как перестроение списка рубрик, так что вам не нужно об этом задумываться.

24 дек. 2010 г. 04:39:30
0

У меня была такая же проблема - я установил плагин 'advanced permalinks', и в нем есть баг... Оказалось, что нужно закомментировать эту строку

$this->add_filter ('category_rewrite_rules');

в плагине. Оригинальный ответ не мой (хотя он помог и мне), взят отсюда

3 февр. 2014 г. 00:55:30
0

Я установил плагин "Advance Permalink" от John Godley 31 марта 2015 года для возврата к предыдущей структуре постоянных ссылок на http://punch2crunch.com

Через 36 часов все мои категории начали выдавать ошибки 404, и одна категория работала, но привязывалась к отдельной записи. Если у вас происходит то же самое, то вам нужно просто вставить одну вещь.

Следуйте шагам:

  1. Из админ-панели перейдите в раздел "Плагины", выберите "Редактор".
  2. Выберите "Advance-permalink/Advance-permalink.php"
  3. Прокрутите вниз, пока не найдете следующий код:

    $this->add_filter ('post_rewrite_rules');
    $this->add_filter ('author_rewrite_rules');
    $this->add_filter ('category_rewrite_rules');
    $this->add_filter ('rewrite_rules_array');
    
  4. Просто добавьте два слеша // перед строкой $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');
    

Обновите ваш сайт, и всё снова начнёт работать идеально. Если нет, то придётся искать проблему в другом месте.

2 апр. 2015 г. 11:33:25
0

У меня была такая же проблема.

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

Это произошло со мной после того, как хостинг-провайдер перенес сайт на другой сервер. Решение, как markratledge указал выше, заключалось в том, чтобы "пересохранить постоянные ссылки в админке WordPress".

Подробная инструкция:

  1. Войдите в админку вашего сайта на WordPress.

  2. Перейдите в раздел Консоль → Настройки → Постоянные ссылки.

  3. Если у вас выбрано "Название записи", выберите "Числовой" вариант и нажмите "Сохранить изменения".

  4. Теперь снова выберите радио-кнопку "Название записи" и сохраните изменения.

Это должно пересохранить ваши настройки, после чего метки и рубрики должны заработать.

28 сент. 2023 г. 22:54:27