WordPress дает мне страницу 404, которая не найдена для всех страниц, кроме домашней.


115

Внезапно я захожу на свой сайт WordPress, и все страницы показывают мне страницу 404, которая не найдена. Я предполагаю, что проблема кроется в структуре постоянных ссылок, которую я, клянусь, не касался. Постоянная ссылка установлена ​​на «месяц и имя».

Я исследовал похожие случаи этой проблемы в Интернете, и многое из этого связано с .htaccessфайлом? Я пытался найти, но не могу. Может, его как-то удалили? Где это должно быть расположено.

Любые предложения будут полезны

и, конечно, я могу видеть скрытые файлы.


Предлагаем также задать этот вопрос на wordpress.stackexchange.com .
Джеймс Уайзман,

Ответы:


95

.htaccess - это скрытый файл, поэтому вы должны сделать все файлы видимыми на вашем ftp.

Я предлагаю вам вернуть структуру постоянных ссылок по умолчанию (? P = ID), чтобы убедиться, что проблема в .htaccess.

После этого вы можете просто снова установить структуру «месяц и имя» и посмотреть, работает ли она.

PS: Вы обновились до 3.1? В этом случае я видел некоторых людей с проблемами с плагинами.


1
да, я показал скрытые файлы. Я переключился со значения по умолчанию на постоянное, и он работает по умолчанию. Кроме того, WordPress обновляется или что-то в этом роде? Я замечаю, что когда я вхожу в систему, на моем веб-сайте появляется новая панель задач администратора, которой у меня раньше не было. Я не знаю, как он туда попал.
Adam

кто-то по ошибке обновился до 3.1, поэтому он конфликтует с плагином
Адам

1
Отсутствие .htaccessтакже может привести к этой проблеме, независимо от того, что вы исправляете постоянную ссылку, поэтому сначала проверьте, не скрыта или нет
Osify

1
Просто войдите в админку WordPress и снова сохраните пармалинки. Это создаст файл .htaccess или обновит существующий.
Keyur Patel

Я пробовал использовать администратора и вручную обновить файл .htaccess, но проблема все еще та же. Также отключите плагин, но не исправляйте проблему с постоянными ссылками.
Jaymin 02

56

В основном файл .htaccess должен существовать, а httpd.conf должен быть правильным.

В моем случае я изменил файл /etc/apache2/apache2.conf в разделе:

<Directory "/var/www/html">

Строка изменена:

AllowOverride None

в

AllowOverride All

И перезапустите веб-сервер с помощью

systemctl restart apache2

1
спасибо, это помогло. В моем случае параметр AllowOverride отсутствовал.
rag

1
Это исправило это и для меня. Я использую бродячий скотчбокс, чего он стоит.
Мэтт Кэй

2
Это почти всегда проблема. Должен быть главный ответ.
Ноэль Барон

Это устранило проблему для меня - должен быть принятый ответ
Чарльз

52

Исправление этой проблемы очень просто , если вы были с помощью других , чем пермалинок , defaultтаких как Day and name, Month and name, Numeric, Post nameили Custom Structure, вам нужно всего лишь

Войдите в свою админку: Settings > Permalinksэто должно быть:http://yoursite.com/wp-admin/options-permalink.php

Выберите Defaultнастройку постоянной ссылки , затем сохраните изменения

Затем вы можете вернуть его снова к предыдущей выбранной постоянной ссылке или оставить ее, как defaultхотите.

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


1
Это несколько помогло мне, у меня были некоторые ошибки в базе данных, и впоследствии все мои страницы были 404. Переключение опции постоянной ссылки на другую опцию (например, обычную), а затем обратно на опцию по умолчанию исправило все мои ссылки!
PaulBGD

Рад слышать , что :)
Усамой Сулайман

2
Идеальный ответ +100
handiansom 07

Как я могу вернуться к настройке постоянной ссылки по умолчанию, если она даже mysite.com/wp-adminне работает?
J86

Идеальный ответ +10086
Aflext

29

Если поведение по умолчанию ( example.com/?p=42) работает, вам следует:

  • Измените на предпочтительный стиль постоянной ссылки: Admin: Settings > Permalinksи нажмите Сохранить. Иногда это решает проблему. Если этого не произошло:
  • Убедитесь, что файл /path/to/wordpress/.htaccessбыл изменен и теперь включает строку RewriteEngine On. Если в нем нет строки, это проблема с разрешениями Wordpress.
  • Убедитесь, что модуль rewrite загружен: создайте файл PHP с

    <?php
      phpinfo()
    ?>
    

    в нем откройте его в браузере и найдите mod_rewrite. Он должен быть в разделе «Загруженные модули». Если это не так, включите его. index.htmlПодробности смотрите в файле apache по умолчанию. В Ubuntu вы делаете это с помощью помощника a2enmod.

  • Убедитесь, что сервер Apache просматривает .htaccessфайл. открытый httpd.conf- или это альтернатива для Ubuntu, /etc/apache2/apache2.conf. В нем должно быть что-то вроде

    <Directory /path/to/wordpress>
      Options Indexes FollowSymLinks
      AllowOverride All
      Require all granted
    </Directory>
    
  • После внесения этих изменений не забудьте перезапустить сервер Apache. sudo service apache2 restart


20

ЕСЛИ все это не работает, ваш .htaccess правильный и трюк с постоянными ссылками не работает, возможно, вы не включили свой мод apache2 rewite .

Я запустил это, и моя проблема была решена:

 sudo a2enmod rewrite 

Поиск mod_rewriteв phpinfo();страницу , чтобы проверить , если вы включили. Он находится в Loaded Modulesофapache2
vanduc1102

9

В интерфейсе администратора WordPress сделайте следующее:

  1. Перейти в настройки администратора

  2. Нажмите на постоянную ссылку и выберите название сообщения в радиокнопке.

  3. Прокрутите вниз, и вы увидите .htaccessздесь код вроде.

    <IfModule mod_rewrite.c>
        RewriteRule ^index\.php$ - [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /wordpress/index.php [L]
    </IfModule> 
    
  4. Скопируйте код и вставьте в .htaccessфайл.

1
Где мне это найти? В постоянных ссылках нет ничего подобного.
Boris_yo

@Boris_yo Насколько я знаю, правила будут отображаться только в том случае, если ваш htaccessфайл notдоступен для записи .. если это wordpress, просто напишет его сам ...
Обмерк Кронен

1
Отличный ответ! и никогда не узнает об этом, если не будет использовать WP в Linux. Большое спасибо
Mayeenul Islam

7

Эта ошибка возникает из-за отключения мода перезаписи в документе apache httpd.conf, просто раскомментируйте его и наслаждайтесь постоянными ссылками, дружественными к поисковой оптимизации.


4
  • Убедитесь, что каталог на .htaccess правильный
  • Проверьте правильность полей siteurl и home.

1
Для меня проблемой был дом. Я исправил это и все снова заработало. Obrithankyou Хосе Карлос.
Tiago Gouvêa

4

У нас была та же проблема, и мы решили ее, проверив error.log нашего виртуального хоста. Мы нашли следующее сообщение:

AH00670: Параметры FollowSymLinks и SymLinksIfOwnerMatch отключены, поэтому директива RewriteRule также запрещена из-за ее аналогичной способности обходить ограничения каталога: / srv / www / htdocs / wp-intranet /

Решением было установить Options Allи AllowOverride Allв нашей конфигурации виртуального хоста.


3

Если у вас есть FTP-доступ к вашей учетной записи:

Сначала войдите в свой wp-admin и перейдите в Настройки> Постоянные ссылки.

Вы должны увидеть что-то внизу, в котором говорится:

«Если бы ваш файл .htaccess был доступен для записи, мы могли бы сделать это автоматически, но это не так, это правила mod_rewrite, которые должны быть в вашем файле .htaccess. Щелкните в поле и нажмите CTRL + a, чтобы выбрать все».

Если это правда, сделайте следующее:

  1. Зайдите в настройки своего FTP-клиента и убедитесь, что отображаются скрытые файлы (зависит от вашего FTP-клиента). Если вы этого не сделаете, вы не сможете найти свой файл htaccess.

  2. Перейдите в папку, в которой находятся ваши каталоги wp-admin, wp-content, wp-includes. Проверьте файл .htaccess. Если он существует, переходите к шагу 4

  3. Если он не существует, создайте новый пустой файл в вашей программе FTP с именем .htaccess.

  4. Измените CHMOD для вашего файла .htaccess на 666 (ваши предпочтения относительно того, как вы хотите это сделать)

  5. Вернитесь на страницу постоянных ссылок и отредактируйте структуру ссылок, которую хотите. Проблема должна быть решена!

  6. Не забудьте изменить chmod файла htaccess на 644 после того, как закончите.

Была такая же проблема, и казалось, что она мгновенно ее решила! Удачи!


"mod_rewrite" это была проблема, я забыл включить его! Спасибо :)
Chemaclass

3

В большинстве случаев эту проблему можно решить, просто посетив страницу « Настройки» -> «Постоянная ссылка» в админке WordPress и нажав «Сохранить» (как уже указывалось в нескольких других ответах). Когда открывается эта страница, WordPress перезаписывает директивы в .htaccessфайле, что волшебным образом устраняет проблему. Проблема часто возникает после перемещения сайта (сайт перестает .htaccessработать, потому что он не работает или необходимо обновить настройки).

Если WordPress не имеет необходимых разрешений для записи .htaccessфайла, при сохранении настроек вверху страницы появится уведомление, а внизу - дальнейшие инструкции. В этом случае вам нужно отредактировать .htaccessфайл самостоятельно или, что лучше, исправить права доступа к этому файлу. Файл находится в корне установки WordPress. cdв каталог и sudo chmod 644 .htaccess. Вы также можете проверить, принадлежит ли файл правильной группе, и внести необходимые изменения с помощью chown. Спросите своего хостинг-провайдера, если вы не знаете, как это сделать.

Если вы используете виртуальный хостинг, это, вероятно, все, что вы можете сделать. Если у вас все еще есть проблема, вы можете поговорить со службой поддержки вашего хостинг-провайдера. В противном случае убедитесь, что .htaccessна сервере разрешено использование файлов, как уже предлагал @georgeos. Обратите внимание, что httpd.confэто не всегда используется ( Ubuntu указывает, что он устарел, но в официальных документах Apache по-прежнему говорится, что он часто является основным файлом конфигурации ). /etc/httpd/conf/httpd.confи /etc/apache2/apache2.confкажутся наиболее распространенными местами для этого файла. Найдите блок для общей папки <Directory /var/www/>и убедитесь, что для AllowOverrideдирективы установлено значение All. Если установлено None, ваш .htaccessфайл просто игнорируется сервером.



2

У вас может быть запрещен .htaccess в настройках веб-хоста. В этом случае подойдет установка постоянных ссылок по умолчанию.


1

Случай 1: - Давайте подумаем, если переносить сайт с одного хостинга на другой, если увидим такую ​​проблему.

Решение: - Просто перейдите к коду файла .htaccess копии старого сервера и вставьте его в файл .htaccess нового сервера. На 99% он будет работать.


0

У меня та же проблема, поэтому я удаляю Apache и делаю его снова, и проблема была решена.


0

Просто перейдите в Настройки-> Постоянная ссылка на панели инструментов, а затем нажмите кнопку Сохранить изменения в последней. \


0

Если ваша установка WordPress находится в подпапке (например, https://www.example.com/subfolder ), измените эту строку в своем WordPress..htaccess

RewriteRule . /index.php [L]

в

RewriteRule . /subfolder/index.php [L]

Тем самым вы указываете серверу искать WordPress index.phpв папке WordPress (например, https://www.example.com/subfolder ), а не в общей папке (например, https://www.example.com ).


0

Я просто изменил постоянную ссылку на «месяц и день» для всех сообщений, установив> постоянную ссылку.

Теперь все сообщения открыты и работают нормально.

Опять же, я переименовал все сообщения в их настоящую постоянную ссылку. Он снова работает нормально.

Этот метод у меня сработал :-)


0

Для пользователей nginx

Используйте следующее в своем файле conf для вашего сайта (обычно /etc/nginx/sites-available/example.com)

location / { try_files $uri $uri/ /index.php?q=$uri&$args; }

Это передает все запросы постоянных ссылок на index.php со строкой URI и предоставленными аргументами. Сделайте a, systemctl reload nginxчтобы увидеть изменения, и ваши ссылки не на главную страницу должны загрузиться.


0

Прежде чем пытаться внести какие-либо изменения в постоянную ссылку или конфигурацию сервера, проверьте файл .htaccess. В основном это проблема с поврежденным или пустым файлом .htaccess. Сбросьте файл 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

0

через 2 долгих дня решение было добавить options +FollowSymLinksв начало .htaccessфайла.


-1

У меня была эта проблема не так давно. Я сбросил постоянную ссылку по умолчанию или просто сохранил ее, обновил темы / ядро ​​до (4.7.4) / плагины, деактивировал все плагины, переключился на тему по умолчанию, оптимизировал базу данных, .htaccess уже по умолчанию, проверил права доступа к файлам, mod_rewrite включен ,

Пока ничего не работает, работают только сообщения, новая страница, страница / contact, ЗА ИСКЛЮЧЕНИЕМ старых страниц.

В основном, страницы / URL-адреса не работают:

/breeding
/training
/training/*
/breeding/*

Ultimate, в корневой папке я нашел эти файлы:

/breeding.php и /training.php

Я переименовал оба файла, и страницы выше заработали.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.