WordPress дає мені 404 сторінки, не знайдені для всіх сторінок, окрім домашньої


115

Раптом я переходжу на свій веб-сайт WordPress, і всі сторінки дають мені сторінку 404 не знайдено. Я припускаю, що проблема полягає в структурі постійної посилання, яку я можу поклястись, що не торкався. Налаштування постійної посилання на "місяць та ім'я".

Я досліджував подібні випадки цієї проблеми в Інтернеті, і чимало вона пов'язана з .htaccessфайлом? Я намагався знайти, але не можу. Можливо, його якось видалили? Де він повинен бути розташований.

Будь-які пропозиції будуть корисними

і я звичайно бачу приховані файли.


Запропонуйте запитати це також на wordpress.stackexchange.com .
Джеймс Вісман

Відповіді:


95

.htaccess - це прихований файл, тому ви повинні встановити всі файли як видимі у вашому ftp.

Я пропоную повернути структуру постійної посилання за замовчуванням (? P = ID), щоб переконатися, що проблема .htaccess є проблемою.

Після цього ви можете просто знову встановити структуру "місяць та ім'я" та побачити, чи працює вона.

PS: Ви модернізували до 3.1? У цьому випадку я бачив деяких людей із проблемами плагінів.


1
так, я показав приховані файли. Я переключився вперед і назад з стандартної на перму, і це працює за замовчуванням. Крім того, чи Wordpress оновлює себе чи щось? Я помічаю, що коли я входжу, у мене на веб-сайті з’являється нова панель завдань адміністратора, якої раніше у мене не було. Я не знаю, як це потрапило.
Адам

хтось помилково оновив до 3.1, тож він конфліктував із плагіном
Адам

1
Відсутнє .htaccessтакож може призвести до цього питання, що б ви не виправили за постійною посиланням, тому перевірте, що спочатку не є прихованим чи відсутнім
Osify

1
Просто увійдіть до адміністратора WordPress та знову збережіть посилання. Це створить файл .htaccess або оновить існуючий.
Keyur Patel

Я спробував використовувати адміністратор і вручну оновити .htaccess файл, але все-таки проблема. Вимкнути плагін, але не виправити непостійну проблему.
Джеймін

56

Фактично, файл .htaccess повинен існувати, а httpd.conf має бути правильним.

У моєму випадку я змінив файл /etc/apache2/apache2.conf у розділі:

<Directory "/var/www/html">

Рядок змінено:

AllowOverride None

до

AllowOverride All

І перезавантажте веб-сервер за допомогою

systemctl restart apache2

1
дякую, що допомогло. У моєму випадку параметр AllowOverride відсутній.
ганчірка

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

Радий почути це :)
usama sulaiman

2
Ідеальна відповідь +100
handiansom

Як я можу повернутись до налаштування постійної посилання за замовчуванням, коли навіть mysite.com/wp-adminвоно не працює?
J86

Ідеальна відповідь +10086
Афлекст

29

Якщо поведінка за замовчуванням ( example.com/?p=42) працює, слід:

  • Перейдіть до потрібного стилю постійної посилання: Admin: Settings > Permalinksта натисніть кнопку Зберегти. Колись це вирішує проблему. Якби не:
  • Переконайтеся, що файл /path/to/wordpress/.htaccessзмінено та тепер він містить рядок RewriteEngine On. Якщо він не включає рядок, це проблема дозволів Wordpress.
  • Переконайтеся, що модуль 'переписати' завантажений: створіть файл 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, просто напишіть його сам ...
Obmerk Kronen

1
Ця відповідь приголомшлива! і ніколи про це не дізнається, якщо не використовувати WP в Linux. Велике спасибі
Іслам Мейєненул

7

Ця помилка викликана через відключення переписати мод у документ apache httpd.conf, просто розв’яжіть його та насолоджуйтесь стандартними посиланнями на seo


4
  • Перевірте правильність каталогу в .htaccess
  • Перевірте правильність полів "siteurl" та "home"

1
Для мене вдома була проблема. Я це виправляю і все повертаюся до роботи. Обрітанькоу Хосе Карлос.
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-include каталоги. Перевірте файл .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

Використовуйте наступне у своєму конф-файлі для свого сайту (як правило /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

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

Поки що нічого не працює, що таке публікації, нова сторінка, / контактна сторінка ВСІМО для старих сторінок.

В основному, сторінки / URL-адреси, які не працюють:

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

Зрештою, я знайшов ці файли в кореневій папці:

/breeding.php та /training.php

Я перейменував обидва файли та сторінки, що працювали вище.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.