Po migracji serwera działa tylko strona główna

33

Niedawno zmieniłem hosting mojej witryny WordPress na VPS.net . Przeniosłem wszystkie moje pliki i zaimportowałem bazę danych. Wszystko wydawało się w porządku, dopóki nie kliknąłem łącza i nie zauważyłem, że wszystkie moje strony przywracają 404 oprócz strony głównej.

Adres URL witryny to http://inksquared.com

mikeyrocks
źródło

Odpowiedzi:

42

Chyba masz http: // twoja witryna, ale http: // twoja witryna / cokolwiek

Miałem podobny problem i problem został rozwiązany po zmianie

httpd.confod

AllowOverride None

do

AllowOverride All

Zgodnie z moim zrozumieniem to zadziała .htaccess.

San
źródło
6
Ten działał dla mnie. Większość ludzi zapomina o tym.
qasimzee
1
To też działało dla mnie, musiałem to tylko zmienić w sekcji apache2.confdotyczącej lokalizacji moich plików serwera, /var/wwww moim przypadku
sponrad
1
To była dla mnie odpowiedź. Dodałem AllowOverride Alldo konfiguracji strony, ale także dodałem Options FollowSymLinks. Byłem wtedy w stanie używać niestandardowych łączy bezpośrednich, które również utworzyły odpowiedni główny plik .htaccess. Potem wszystko działało.
boot13
1
I nie zapomnij zrestartować Apache! "sudo service apache2 restart"
gradosevic
1
Zadziałało. Upewnij się, że zmieniłeś opcję AllowOverride w lokalizacjach w pliku conf.
Najeeb,
44

Spróbuj opróżnić swoje reguły mod_rewrite:

Pulpit nawigacyjny -> Ustawienia -> Permalinks

Zapisz ustawienia (nie musisz dokonywać żadnych zmian)

Chip Bennett
źródło
7
Właściwie nie trzeba nawet oszczędzać. Reguły są czyszczone po prostu odwiedzając tę ​​stronę, a część opróżniania reguł polega na pisaniu na .htaccess.
John P Bloch,
Uczę się czegoś nowego każdego dnia ... :)
Chip Bennett,
@ john, jesteś pewien, że wystarczy załadować stronę, napisz do .htaccess, jeśli to konieczne? Miałem wrażenie, że tylko rewrite_rules w bazie danych są opróżniane.
Ashfame,
Wywołania wp-admin / options-permalinks.php flush_rewrite_rules(), otoki dla WP_Rewrite::flush_rules(), które, jeśli $hardtrue(są wywoływane na tej stronie) i funkcja save_mod_rewrite_rulesistnieje (zdefiniowana w wp-admin/includes/misc.php, zawarta na wszystkich stronach administratora), wywołuje save_mod_rewrite_rules(). Zobacz definicję tej funkcji tutaj: core.trac.wordpress.org/browser/trunk/wp-admin/includes/…
John P Bloch,
Funkcja, która faktycznie zapisuje reguły przepisywania na .htaccess nazywa insert_with_markers(używane w save_mod_rewrite_rules()wyżej), zdefiniowany tutaj: core.trac.wordpress.org/browser/trunk/wp-admin/includes/...
John P Bloch
27

Napotkałem ten sam problem.

Wykonałem następujące czynności, aby rozwiązać ten problem na serwerze Ubuntu:

  1. W pliku /etc/apache2/apache2.conf edytuj AllowOverride None dla / var / www /, aby AllowOverride All

  2. Wpisz następujące polecenie, aby włączyć mod_rewrite dla .htaccess

sudo a2enmod przepisz

  1. Uruchom ponownie serwer Apache:

usługa sudo apache2 restart

Problem rozwiązany !!!

Avinash
źródło
Dzięki, nie mogłem tego naprawić z żadną inną sugestią, ale a2enmod rewritezałatwiłem sprawę.
Martin McCallion
+1 Za wzmiankę o modyfikacji przepisu. Nie zdawałem sobie sprawy, że nie było to domyślnie włączone.
Native Coder,
Zdecydowanie potrzebowałem tego, sudo a2enmod rewriteaby uzyskać ten głos, dzięki!
Huskie69,
1
Dzięki! Polecenie a2enmod rewritezałatwiło sprawę.
Lucas Basquerotto
Dzięki Avinash! Podobnie z Lucasem, przepisanie a2enmod załatwiło sprawę
Jero Dungog,
1

Najprawdopodobniej przyczyną .htaccessnie jest skopiowanie pliku. W systemie Mac OS X i niektórych aplikacjach FTP plik ten jest uważany za „ukryty”, ponieważ zaczyna się od .. Jeśli przejdziesz do sekcji Ustawienia -> Permalinks w sekcji administratora, możesz ponownie wygenerować ten plik, ale prawdopodobnie najlepiej jest znaleźć poprzednią wersję i użyć go ponownie (szczególnie jeśli używasz wtyczki buforującej).

Gavin Anderegg
źródło
1

W Ubuntu 14.04 - plik 000-default.conf można znaleźć tutaj/etc/apache2/sites-available

Lub jeśli uruchomisz wiele wp, ustawienie hosta wirtualnego będzie nazwą pliku konfiguracyjnego. np. domain.conf

Musisz wymienić AllowOverride NonenaAllowOverride All

Mam nadzieję, że to zadziała.

Sam
źródło
0

Czy otrzymujesz serwer WWW 404 lub WordPress 404? Jeśli jest to serwer sieciowy 404, najprawdopodobniej nie skopiowałeś głównego pliku htaccess ze starej instalacji lub nie ma on odpowiednich uprawnień do uruchomienia.

Moim pierwszym rozwiązaniem problemu byłoby sprawdzenie i sprawdzenie, czy plik htaccess istnieje w katalogu głównym. A jeśli tak, to co zawiera.

MathSmath
źródło
Sprawdzono plik .htaccess. Zawiera ten sam kod, który pojawił się w sekcji permalink panelu administracyjnego wordpress. Zmieniłem uprawnienia na zapisywalne i nie widzę żadnych widocznych zmian.
mikeyrocks,
3
@mikeyrocks Hmm ... Inną możliwością jest to, że twój nowy serwer nie ma włączonego mod_rewrite. Ważne: czy otrzymujesz serwer 404 (zwykła biała strona z napisem „nie znaleziono”), czy WordPress 404 (stylizowany na resztę witryny)?
MathSmath,