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


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.


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)


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 !!!


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).


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.


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.


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.