Після міграції сервера працює лише домашня сторінка


33

Я нещодавно змінив хостинг свого сайту WordPress на VPS.net . Я перемістив усі свої файли та імпортував базу даних. Здавалося, все добре, поки я не натиснув посилання і не помітив, що всі мої сторінки повертають 404, окрім домашньої.

URL-адреса сайту http://inksquared.com


Відповіді:


42

Я думаю, ви отримуєте http: // tvojeite, але http: // yoursite / будь-що

У мене була подібна проблема, і вона була вирішена, коли я змінився

від httpd.confз

AllowOverride None

до

AllowOverride All

Згідно з моїм розумінням, це .htaccessвступить в силу.


6
Цей працював на мене. Більшість людей про це забувають.
qasimzee

1
Це теж працювало для мене, довелося лише змінити його в розділі про apache2.confрозташування моїх серверних файлів, /var/wwwу моєму випадку
sponrad

1
Це було частиною відповіді для мене. Я додав AllowOverride Allдо конфігурації сайту, але також додав Options FollowSymLinks. Тоді я зміг використовувати власні постійні посилання, які також створили відповідний корінний файл .htaccess. Після цього все спрацювало.
boot13

1
І не забудьте перезапустити апаш! "sudo service apache2 restart"
gradosevic

1
Це спрацювало. Переконайтеся, що ви змінили параметр AllowOverride у місцях розташування файлу conf.
Najeeb

44

Спробуйте очистити правила mod_rewrite:

Інформаційна панель -> Налаштування -> Постійні посилання

Збережіть налаштування (не потрібно вносити жодних змін)


7
Фактично навіть не потрібно економити. Правила видаються лише за допомогою відвідування цієї сторінки, а частина стирання правил передбачає запис у .htaccess.
Джон П Блох

Я щодня дізнаюся щось нове ... :)
Чіп Беннетт

@john Ви впевнені, що лише завантаження сторінок пише в .htaccess, якщо це потрібно? У мене склалося враження, що в базі даних зчитуються лише rewrite_rules.
Ашфаме

wp-admin / options-permalinks.php викликає flush_rewrite_rules(), обгортку для WP_Rewrite::flush_rules()якої, якщо вона $hardє true(яка вона є, коли викликається на цій сторінці) і функція save_mod_rewrite_rulesіснує (визначена в wp-admin/includes/misc.php, включена у всі сторінки адміністратора), вона викликає save_mod_rewrite_rules(). Див. Визначення цієї функції тут: core.trac.wordpress.org/browser/trunk/wp-admin/includes/…
Джон П Блох

Функція, яка насправді записує правила перезапису в .htaccess, викликається insert_with_markers(використовується save_mod_rewrite_rules()вище), визначена тут: core.trac.wordpress.org/browser/trunk/wp-admin/includes/…
Джон П Блок

27

Я зіткнувся з тією ж проблемою.

Я зробив наступне, щоб вирішити це на сервері Ubuntu:

  1. У /etc/apache2/apache2.conf відредагуйте AllowOverride None для / var / www / до AllowOverride All

  2. Введіть наступну команду, щоб увімкнути mod_rewrite для .htaccess

переписати sudo a2enmod

  1. Перезавантажте Ваш сервер apache:

перезапуск служби sudo служби apache2

Проблема вирішена !!!


Дякую, я не зміг це виправити жодною з інших пропозицій, але a2enmod rewriteзробив трюк.
Мартін МакКалліон

+1 Для згадування переписати мод. Не зрозумів, що це не було включено за замовчуванням.
Рідний кодер

Безумовно, це потрібно, sudo a2enmod rewriteщоб отримати це вокрінг, дякую!
Huskie69

1
Спасибі! Команда a2enmod rewriteзробила для мене трюк.
Лукас Баскротто

Спасибі Авінаш! Так само і з Лукасом, переписувач a2enmod зробив для мене трюк
Jero Dungog

1

Найімовірніше, що .htaccessфайл не було скопійовано. У Mac OS X та в деяких додатках FTP цей файл вважається "прихованим", оскільки він починається з .. Якщо ви перейдете до розділу Налаштування -> Постійні посилання у розділі адміністратора, ви можете відновити цей файл, але, мабуть, найкраще знайти попередню версію та використати її знову (особливо якщо ви використовуєте плагін кешування).


1

У Ubuntu 14.04 тут можна знайти файл 000-default.conf/etc/apache2/sites-available

Або якщо ви запускаєте кілька wp, налаштуванням віртуального хоста буде ім’я вашого конфігураційного файла. наприклад, domain.conf

Ви повинні замінити AllowOverride NoneнаAllowOverride All

Сподіваюся, це спрацює.


0

Ви отримуєте веб-сервер 404 або WordPress 404? Якщо це веб-сервер 404, ви, швидше за все, не скопіювали кореневий файл htaccess зі старої установки або не має правильних дозволів на запуск.

Першим моїм елементом усунення несправностей було б перевірити і перевірити, чи є в корені файл htaccess. І якщо так, то що він містить.


Перевірив файл .htaccess. Він містить той самий код, який з’явився в розділі постійної посилання на панелі адміністратора wordpress. Я змінив дозволи на доступ для запису і не бачив явних змін.
mikeyrocks

3
@mikeyrocks Хм ... ще одна можливість полягає в тому, що на новому сервері не ввімкнено mod_rewrite. Важливо: Ви отримуєте сервер 404 (звичайна біла сторінка з написом "не знайдено") або WordPress 404 (стилізований як решта вашого сайту)?
MathSmath
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.