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

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

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

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

Aceasta soluție a funcționat pentru mine. Majoritatea oamenilor uită de acest lucru.

Ș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

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.

A funcționat. Asigurați-vă că modificați opțiunea AllowOverride în locațiile din fișierul conf.

activarea în httpd.conf LoadModule rewrite_module libexec/apache2/mod_rewrite.so a funcționat pe Mac. eliminați # pentru a o activa

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.

+1 Pentru menționarea modulului rewrite. Nu mi-am dat seama că acesta nu este activat implicit.

Cu siguranță a fost necesar sudo a2enmod rewrite
pentru a face asta să funcționeze, mulțumesc!

Mulțumesc! Comanda a2enmod rewrite
a funcționat pentru mine.

Î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ă.
