După migrarea serverului, funcționează doar pagina principală
Recent mi-am mutat găzduirea site-ului WordPress pe VPS.net. Am transferat toate fișierele și am importat baza de date. Totul părea în regulă până când am dat click pe un link și am observat că toate paginile mele returnează eroare 404, cu excepția paginii principale.
URL-ul site-ului este http://inksquared.com
De fapt, nici nu este nevoie să salvezi. Regulile sunt resetate doar prin vizitarea acelei pagini, iar procesul de resetare include scrierea în .htaccess.
John P Bloch
@john ești sigur că doar încărcarea paginii scrie în .htaccess dacă este necesar? Am avut impresia că doar rewrite_rules din baza de date sunt resetate.
Ashfame
wp-admin/options-permalinks.php apelează flush_rewrite_rules(), un wrapper pentru WP_Rewrite::flush_rules(), care, dacă $hard este true (așa cum este când este apelat pe acea pagină) și funcția save_mod_rewrite_rules există (definită în wp-admin/includes/misc.php, inclusă în toate paginile de administrare), apelează save_mod_rewrite_rules(). Vezi definiția acelei funcții aici: http://core.trac.wordpress.org/browser/trunk/wp-admin/includes/misc.php#L114
John P Bloch
Funcția care scrie efectiv regulile de rescriere în .htaccess se numește insert_with_markers (folosită în save_mod_rewrite_rules() de mai sus), definită aici: http://core.trac.wordpress.org/browser/trunk/wp-admin/includes/misc.php#L53
John P Bloch
Nu este nevoie să deschizi cPanel. Am încercat mai întâi răspunsul acceptat și, deoarece am hosting partajat, nu am putut găsi fișierul httpd.conf, iar chat-ul live încă se încărca. Apoi am găsit acest răspuns, care este cea mai ușoară soluție de utilizat. :D
TheOnlyAnil
Aceasta soluție a funcționat pentru mine. Majoritatea oamenilor uită de acest lucru.
qasimzee
Și pentru mine a funcționat, a trebuit doar să modific în secțiunea apache2.conf locația fișierelor serverului meu, în cazul meu /var/www
sponrad
Aceasta a fost o parte din soluție pentru mine. Am adăugat AllowOverride All în configurația site-ului, dar am adăugat și Options FollowSymLinks. Apoi am putut folosi permalink-uri personalizate, care au creat și un fișier .htaccess corespunzător în rădăcină. După aceea, totul a funcționat.
boot13
A funcționat. Asigurați-vă că modificați opțiunea AllowOverride în locațiile din fișierul conf.
Najeeb
activarea în httpd.conf LoadModule rewrite_module libexec/apache2/mod_rewrite.so a funcționat pe Mac. eliminați # pentru a o activa
stefanosn
Am avut aceeași problemă.
Am făcut următoarele pentru a o rezolva pe un server Ubuntu:
În /etc/apache2/apache2.conf, editează AllowOverride None pentru /var/www/ în AllowOverride All
Introdu următoarea comandă pentru a activa mod_rewrite pentru .htaccess
sudo a2enmod rewrite
- Repornește serverul Apache:
sudo service apache2 restart
Problema a fost rezolvată!!!
Mulțumesc, nu am reușit să rezolv problema cu alte sugestii, dar a2enmod rewrite a funcționat.
Martin McCallion
+1 Pentru menționarea modulului rewrite. Nu mi-am dat seama că acesta nu este activat implicit.
Native Coder
Cu siguranță a fost necesar sudo a2enmod rewrite pentru a face asta să funcționeze, mulțumesc!
Huskie69
Mulțumesc! Comanda a2enmod rewrite a funcționat pentru mine.
Lucas Basquerotto
În Ubuntu 14.04 - fișierul 000-default.conf poate fi găsit aici /etc/apache2/sites-available
Sau dacă rulezi mai multe instanțe WordPress, setările virtual host vor fi în fișierul de configurare corespunzător. de ex. domain.conf
Trebuie să înlocuiești AllowOverride None cu AllowOverride All
Sper că această soluție va funcționa.
Motivul este cel mai probabil că fișierul .htaccess nu a fost copiat. Pe Mac OS X și în unele aplicații FTP, acest fișier este considerat "ascuns" deoarece începe cu un .. Dacă accesați secțiunea Setări -> Legături permanente în panoul de administrare, puteți regenera acest fișier, dar cel mai bine este să găsiți versiunea pe care o aveați anterior și să o utilizați din nou (mai ales dacă folosiți un plugin de caching).
Primești o eroare 404 de la serverul web sau de la WordPress? Dacă este o eroare 404 de la serverul web, cel mai probabil nu ai copiat fișierul htaccess din directorul rădăcină al instalației vechi, sau acesta nu are permisiunile corecte pentru a funcționa.
Primul meu pas în depanare ar fi să verific dacă există un fișier htaccess în directorul rădăcină. Și dacă există, să văd ce conține.
Am verificat fișierul .htaccess. Conține același cod care apărea în secțiunea de legături permanente din panoul de administrare WordPress. Am schimbat permisiunile în modul de scriere și nu observ nicio modificare aparentă.
mikeyrocks