Dopo la migrazione del server funziona solo la homepage
Ho recentemente cambiato l'hosting del mio sito WordPress su VPS.net. Ho spostato tutti i miei file e importato il database. Tutto sembrava funzionare correttamente finché non ho cliccato su un link e ho notato che tutte le mie pagine restituiscono un errore 404 eccetto la homepage.
L'URL del sito è http://inksquared.com

In realtà non c'è nemmeno bisogno di salvare. Le regole vengono aggiornate semplicemente visitando quella pagina, e parte dell'aggiornamento delle regole implica la scrittura su .htaccess.

@john sei sicuro che il semplice caricamento della pagina scriva su .htaccess se necessario? Avevo l'impressione che solo le rewrite_rules nel database venissero aggiornate.

wp-admin/options-permalinks.php chiama flush_rewrite_rules()
, un wrapper per WP_Rewrite::flush_rules()
, che, se $hard
è true
(come avviene quando viene chiamato in quella pagina) e la funzione save_mod_rewrite_rules
esiste (definita in wp-admin/includes/misc.php
, inclusa in tutte le pagine di amministrazione), chiama save_mod_rewrite_rules()
. Vedi la definizione di questa funzione qui: http://core.trac.wordpress.org/browser/trunk/wp-admin/includes/misc.php#L114

La funzione che effettivamente scrive le regole di riscrittura in .htaccess si chiama insert_with_markers
(utilizzata in save_mod_rewrite_rules()
sopra), definita qui: http://core.trac.wordpress.org/browser/trunk/wp-admin/includes/misc.php#L53

Non c'è bisogno di aprire il cPanel. Stavo provando prima la risposta accettata e il mio è un hosting condiviso quindi non riuscivo a trovare httpd.conf e la chat live sta ancora caricando. Poi ho trovato questa risposta che è la soluzione più semplice da usare. :D

Questo ha funzionato per me. La maggior parte delle persone si dimentica di questo.

Anche per me ha funzionato, ho solo dovuto modificarlo nella sezione di apache2.conf
per la posizione dei miei file del server, nel mio caso /var/www

Questo è stato parte della soluzione per me. Ho aggiunto AllowOverride All
alla configurazione del sito, ma ho anche aggiunto Options FollowSymLinks
. Così ho potuto usare permalink personalizzati, che hanno anche creato un appropriato file .htaccess nella root. Dopo di che tutto ha funzionato.

E non dimenticare di riavviare apache! "sudo service apache2 restart"

Ha funzionato. Assicurati di modificare l'opzione AllowOverride nelle posizioni nel file conf.

abilitando in httpd.conf LoadModule rewrite_module libexec/apache2/mod_rewrite.so ha funzionato su mac. rimuovi il # per abilitarlo

Ho affrontato lo stesso problema.
Ho eseguito i seguenti passaggi per risolverlo su un server Ubuntu:
In /etc/apache2/apache2.conf, modificare AllowOverride None per /var/www/ in AllowOverride All
Digitare il seguente comando per abilitare mod_rewrite per .htaccess
sudo a2enmod rewrite
- Riavviare il server apache:
sudo service apache2 restart
Problema risolto!!!

Grazie, non ero riuscito a risolvere con nessun altro suggerimento, ma a2enmod rewrite
ha funzionato.

+1 Per aver menzionato il modulo rewrite. Non sapevo che non fosse abilitato di default.

Sicuramente serviva quel sudo a2enmod rewrite
per farlo funzionare, grazie!

In Ubuntu 14.04 - il file 000-default.conf si trova in questa posizione /etc/apache2/sites-available
Oppure, se gestisci più installazioni WordPress, le impostazioni del virtual host saranno nel tuo file di configurazione. es. dominio.conf
Devi sostituire AllowOverride None
con AllowOverride All
Spero che funzioni.

Il motivo è molto probabilmente che il file .htaccess
non è stato copiato. Su Mac OS X e in alcune applicazioni FTP, questo file viene considerato "nascosto" perché inizia con un .
. Se vai nella sezione Impostazioni -> Permalink nella tua area di amministrazione, puoi rigenerare questo file, ma probabilmente è meglio trovare la versione che avevi precedentemente e utilizzare quella di nuovo (specialmente se usi un plugin di caching).

Ricevi un errore 404 del server web o un errore 404 di WordPress? Se è un errore 404 del server web, molto probabilmente non hai copiato il file htaccess radice dalla vecchia installazione, oppure non ha i permessi corretti per essere eseguito.
Il mio primo elemento di risoluzione dei problemi sarebbe controllare se esiste un file htaccess nella directory radice e, in caso affermativo, vedere cosa contiene.

Ho controllato il file .htaccess. Contiene lo stesso codice che appariva nella sezione permalink del pannello di amministrazione di WordPress. Ho modificato i permessi in scrivibile ma non vedo apparenti cambiamenti.
