WordPress daje mi stronę 404, której nie znaleziono dla wszystkich stron z wyjątkiem strony głównej

115

Nagle przechodzę do mojej witryny WordPress i wszystkie strony dają mi stronę 404 nie znaleziono strony. Zakładam, że problem leży w strukturze permalinku, której mógłbym przysiąc, że nie dotknąłem. Ustawienie bezpośredniego łącza to „miesiąc i nazwa”.

Sprawdziłem w Internecie podobne przypadki tego problemu i wiele ma to wspólnego z .htaccessplikiem? Próbowałem znaleźć, ale nie mogę. Może został jakoś usunięty? Gdzie ma się znajdować.

Wszelkie sugestie będą pomocne

i oczywiście widzę ukryte pliki.

Adam
źródło
Zaproponuj, aby zapytać o to również na wordpress.stackexchange.com .
James Wiseman

Odpowiedzi:

95

.htaccess jest plikiem ukrytym, więc musisz ustawić wszystkie pliki jako widoczne w Twoim ftp.

Proponuję przywrócić domyślną strukturę permalinku (? P = ID), aby upewnić się, że problem stanowi .htaccess.

Następnie możesz ponownie ustawić strukturę „miesiąca i nazwy” i sprawdzić, czy działa.

PS: Czy zaktualizowałeś do 3.1? Widziałem kilka osób z problemami z wtyczkami w tym przypadku.

Rochester Oliveira
źródło
1
tak, pokazałem ukryte pliki. Przełączałem się z domyślnego na perma i domyślnie działa. Ponadto, czy wordpress aktualizuje się sam, czy coś? Zauważam, że kiedy się loguję, na mojej stronie pojawia się nowy pasek zadań administratora, którego wcześniej nie miałem. Nie wiem, jak to się tam dostało.
Adam
ktoś omyłkowo zaktualizował do 3.1, więc to powodowało konflikt z wtyczką
Adam
1
Brakujące .htaccessrównież może prowadzić do tego problemu, cokolwiek
poprawisz
1
Po prostu zaloguj się do administratora WordPress i ponownie zapisz parmalinki. Spowoduje to wygenerowanie pliku .htaccess lub zaktualizowanie istniejącego.
Keyur Patel
Próbowałem użyć administratora i ręcznie zaktualizować plik .htaccess, ale nadal ten sam problem. Wyłącz również wtyczkę, ale nie naprawiaj problemu z permalinkiem.
Jaymin
56

Zasadniczo plik .htaccess powinien istnieć, a plik httpd.conf powinien być poprawny.

W moim przypadku zmieniłem plik /etc/apache2/apache2.conf w sekcji:

<Directory "/var/www/html">

Linia zmieniona to:

AllowOverride None

do

AllowOverride All

I zrestartuj serwer WWW za pomocą

systemctl restart apache2
georgeos
źródło
1
dzięki, że pomogło. W moim przypadku brakowało ustawienia AllowOverride.
szmata
1
To też naprawiło to dla mnie. Używam szkockiej włóczęgi, bo to jest warte.
Matt Kaye
2
To jest prawie zawsze problem. Powinna być najlepsza odpowiedź.
Noel Baron
To rozwiązało problem dla mnie - powinna być akceptowaną odpowiedzią
Karol
52

Mocowanie tego problemu jest bardzo proste, jeśli używał permalinks innych niż defaulttakie jak Day and name, Month and name, Numeric, Post namelub Custom Structure, trzeba tylko

Zaloguj się do swojego obszaru administracyjnego: Settings > Permalinkspowinien to być:http://yoursite.com/wp-admin/options-permalink.php

Wybierz Defaultustawienie linku bezpośredniego , a następnie zapisz zmiany

Następnie możesz przywrócić go do poprzedniego wyboru permalinka lub zachować go tak, defaultjak chcesz

Pamiętaj, że ten problem może wystąpić, gdy przenosisz witrynę z domeny lub lokalizacji do innej.

usama sulaiman
źródło
1
W pewnym stopniu pomogło mi to, miałem kilka błędów w bazie danych i później wszystkie moje strony były 404. Przełączenie opcji permalink na inną opcję (taką jak zwykły), a następnie z powrotem na opcję domyślną, naprawiło wszystkie moje linki!
PaulBGD
Miło to słyszeć :)
usama sulaiman
2
Doskonała odpowiedź +100
handiansom
Jak mogę wrócić do domyślnego ustawienia bezpośredniego linku, gdy nawet mysite.com/wp-adminnie działa?
J86
Doskonała odpowiedź +10086
Aflext
29

Jeśli domyślne zachowanie ( example.com/?p=42) działa, powinieneś:

  • Zmień preferowany styl linków bezpośrednich: Admin: Settings > Permalinksi kliknij Zapisz. Czasami rozwiązuje problem. Jeśli nie:
  • Sprawdź, czy plik /path/to/wordpress/.htaccesszostał zmieniony i zawiera teraz wiersz RewriteEngine On. Jeśli nie zawiera linii, jest to problem z uprawnieniami Wordpress.
  • Sprawdź, czy moduł 'rewrite' jest załadowany: utwórz plik PHP z rozszerzeniem

    <?php
      phpinfo()
    ?>

    w nim otwórz go w przeglądarce i wyszukaj mod_rewrite. Powinien znajdować się w sekcji „Wczytane moduły”. Jeśli tak nie jest, włącz go - spójrz na domyślny index.htmlplik Apache , aby uzyskać szczegółowe informacje - w Ubuntu robisz to z pomocą a2enmod.

  • Sprawdź, czy serwer Apache przegląda .htaccessplik. otwarte httpd.conf- czy jest to alternatywa Ubuntu, /etc/apache2/apache2.conf. W nim powinieneś mieć coś takiego

    <Directory /path/to/wordpress>
      Options Indexes FollowSymLinks
      AllowOverride All
      Require all granted
    </Directory>
  • Po wprowadzeniu tych zmian nie zapomnij zrestartować serwera Apache. sudo service apache2 restart

tsvikas
źródło
20

JEŚLI to wszystko nie działa, twój .htaccess jest poprawny, a trik z permalinkami nie zadziałał, być może nie włączyłeś mod rewitowania apache2 .

Uruchomiłem to i mój problem został rozwiązany:

 sudo a2enmod rewrite 
David Valenza
źródło
Szukaj mod_rewritew phpinfo();strony, aby sprawdzić, czy masz włączone. To właśnie w Loaded Modulesodapache2
vanduc1102
9

W interfejsie administratora WordPress wykonaj następujące czynności:

  1. Przejdź do ustawień administratora

  2. Kliknij link bezpośredni i wybierz nazwę posta w przycisku radiowym.

  3. Przewiń w dół, a zobaczysz .htaccesstutaj kod, taki jak.

    <IfModule mod_rewrite.c>
        RewriteRule ^index\.php$ - [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /wordpress/index.php [L]
    </IfModule> 
  4. Skopiuj kod i wklej w .htaccesspliku.
Mahesh Singh Chouhan
źródło
1
Gdzie to znajdę? W permalinkach nie ma nic takiego.
Boris_yo
@Boris_yo O ile wiem, reguły pojawią się tylko wtedy, gdy twój htaccessplik jest notzapisywalny ... jeśli jest to wordpress, po prostu zapisze go sam ...
Obmerk Kronen
1
Ta odpowiedź jest niesamowita! i nigdy się o tym nie dowie, chyba że używasz WP w Linuksie.
Wielkie
7

Ten błąd jest spowodowany wyłączeniem przepisywania moda w dokumencie apache httpd.conf, po prostu odkomentuj go i ciesz się przyjaznymi dla SEO linkami permalinkami

Asif Khan
źródło
4
  • Sprawdź, czy katalog na .htaccess jest poprawny
  • Sprawdź, czy pola „siteurl” i „home” są prawidłowe
José Carlos
źródło
1
Dla mnie dom był problemem. Naprawiam to i wracam do pracy. Obrithankyou José Carlos.
Tiago Gouvêa
4

Mieliśmy ten sam problem i rozwiązaliśmy go, sprawdzając error.log naszego wirtualnego hosta. Znaleźliśmy następującą wiadomość:

AH00670: Opcje FollowSymLinks i SymLinksIfOwnerMatch są wyłączone, więc dyrektywa RewriteRule jest również zabroniona ze względu na jej podobną zdolność do omijania ograniczeń katalogowych: / srv / www / htdocs / wp-intranet /

Rozwiązaniem było ustawienie Options Alli AllowOverride Allw naszej konfiguracji wirtualnego hosta.

czarny
źródło
3

Jeśli masz dostęp FTP do swojego konta:

Najpierw zaloguj się do swojego wp-admin i przejdź do Ustawienia> Permalinki

Na dole powinieneś zobaczyć coś, co mówi:

„Gdyby twój plik .htaccess był zapisywalny, moglibyśmy zrobić to automatycznie, ale tak nie jest, to są reguły mod_rewrite, które powinieneś mieć w swoim pliku .htaccess. Kliknij pole i naciśnij CTRL + a, aby zaznaczyć wszystko.”

Jeśli to prawda, wykonaj następujące czynności:

  1. Przejdź do preferencji swojego klienta FTP i upewnij się, że ukryte pliki są wyświetlane (różni się w zależności od klienta FTP) - Jeśli tego nie zrobisz, nie będziesz w stanie znaleźć swojego pliku htaccess

  2. Przejdź do folderu, w którym znajdują się katalogi wp-admin, wp-content, wp-includes. Sprawdź plik .htaccess. Jeśli istnieje, przejdź do kroku 4

  3. Jeśli nie istnieje, utwórz nowy, pusty plik w programie FTP o nazwie .htaccess

  4. Zmień CHMOD dla swojego pliku .htaccess na 666 (Twoje preferencje, jak chcesz to zrobić)

  5. Wróć do strony Permalinks i edytuj żądaną strukturę linków. Problem powinien zostać rozwiązany!

  6. Po zakończeniu upewnij się, że zmieniłeś chmod pliku htaccess z powrotem na 644.

Po prostu miałem ten sam problem i wydawało się, że rozwiązałem go natychmiast! Powodzenia!

JEFF B.
źródło
"mod_rewrite" to był problem, zapomniałem go włączyć! Dzięki :)
Chemaclass
3

W większości przypadków problem ten rozwiązuje się po prostu odwiedzając stronę Ustawienia -> Link bezpośredni w panelu administracyjnym WordPress i klikając Zapisz (jak już wskazano kilka innych odpowiedzi). Po wejściu na tę stronę WordPress przepisuje dyrektywy w .htaccesspliku, co w magiczny sposób rozwiązuje problem. Problem często występuje po przeniesieniu witryny (witryna się psuje, ponieważ .htaccesszostaje w tyle lub ustawienia wymagają aktualizacji).

Jeśli WordPress nie ma odpowiednich uprawnień do zapisu .htaccesspliku, na górze strony pojawi się informacja, a na dole dalsze instrukcje, gdy ustawienia zostaną zapisane. W takim przypadku musisz samodzielnie edytować .htaccessplik lub, lepiej, naprawić uprawnienia do tego pliku. Plik znajduje się w katalogu głównym instalacji WordPress. cddo katalogu i sudo chmod 644 .htaccess. Możesz również sprawdzić, czy plik należy do odpowiedniej grupy i zmienić to, co jest potrzebne, za pomocą chown. Zapytaj swojego dostawcę usług hostingowych, jeśli nie wiesz, jak to zrobić.

Jeśli korzystasz z hostingu współdzielonego, to prawdopodobnie wszystko, co możesz zrobić. Jeśli nadal masz problem, możesz porozmawiać z pomocą techniczną dostawcy usług hostingowych. W przeciwnym razie upewnij się, że korzystanie z .htaccessplików jest włączone na serwerze, jak już zasugerował @georgeos. Zauważ, że httpd.confnie zawsze jest używane ( Ubuntu wskazuje, że jest przestarzałe, ale oficjalna dokumentacja Apache nadal mówi, że często jest to główny plik konfiguracyjny ). /etc/httpd/conf/httpd.confi /etc/apache2/apache2.confwydają się być najczęstszymi miejscami dla tego pliku. Znajdź zwykle blok dla folderu publicznego <Directory /var/www/>i upewnij się, że AllowOverridedyrektywa jest ustawiona na All. Jeśli jest ustawiona na None, twój .htaccessplik jest po prostu ignorowany przez serwer.

mrtnmgs
źródło
2

Być może domena .htaccess jest zabroniona w ustawieniach hosta internetowego. W takim przypadku działałoby ustawienie domyślne permalinki.

Fanky
źródło
1

Przypadek 1: - Zastanówmy się, czy migrować witrynę z jednego hostingu do innego hostingu, jeśli widzisz tego rodzaju problem.

Rozwiązanie: - Po prostu przejdź do kodu pliku kopii .htaccess starego serwera, a następnie wklej nowy plik .htaccess na serwerze. 99% będzie działać.

Navruk
źródło
0

Mam ten sam problem, więc usuwam Apache i robię go ponownie, a problem został rozwiązany.

boomz
źródło
0

Po prostu przejdź do Ustawienia-> Bezpośredni link na pulpicie nawigacyjnym, a następnie przycisk Zapisz zmiany w ostatnim. \

Deepak Sharma
źródło
0

Właśnie zmieniłem permalink na „miesiąc i dzień” wszystkich postów, przechodząc do ustawienia> permalink.

Teraz wszystkie posty są otwarte i działają poprawnie.

Ponownie, zmieniłem nazwę wszystkich postów na ich rzeczywisty permalink. Jego znowu działa dobrze.

Ta metoda zadziałała dla mnie :-)

Shani Deshwal
źródło
0

Dla użytkowników nginx

Użyj następujących elementów w pliku konfiguracyjnym swojej witryny (zwykle /etc/nginx/sites-available/example.com)

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

Przekazuje to wszystkie żądania bezpośredniego łącza do index.php z ciągiem znaków URI i dostarczonymi argumentami. Zrób, systemctl reload nginxaby zobaczyć zmiany, a linki spoza strony głównej powinny się załadować.

ABCTaylor
źródło
0

Przed próbą wprowadzenia jakichkolwiek zmian w konfiguracji permalink lub serwera, sprawdź plik .htaccess. Najczęściej jest to uszkodzony lub pusty plik .htaccess. Zresetuj plik htaccess do domyślnego

# 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
Mustafa sabir
źródło
0

po 2 długich dniach rozwiązaniem było dodanie options +FollowSymLinksna górę mojego .htaccesspliku.

Ahmad Ali
źródło
-1

Miałem ten problem nie tak dawno temu. Zresetowałem mój permalink do domyślnego lub właśnie go zapisałem, zaktualizowałem motywy / rdzeń do (4.7.4) / plugins, dezaktywowałem wszystkie wtyczki, przełączyłem na domyślny motyw, zoptymalizowaną bazę danych, .htaccess jest już domyślny, sprawdziłem uprawnienia do plików, mod_rewrite jest włączony .

Jak dotąd nic nie działa, działają posty, nowa strona, strona / kontakt Z WYJĄTKIEM starych stron.

Zasadniczo strony / adresy URL, które nie działają, to:

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

Ultimate, znalazłem te pliki w folderze głównym:

/breeding.php i /training.php

Zmieniłem nazwy obu plików i powyższe strony działały.

Loreto Gabawa Jr.
źródło