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 P Bloch
@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.
Ashfame
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
John P Bloch
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
John P Bloch
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
TheOnlyAnil
Questo ha funzionato per me. La maggior parte delle persone si dimentica di questo.
qasimzee
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
sponrad
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.
boot13
E non dimenticare di riavviare apache! "sudo service apache2 restart"
gradosevic
Ha funzionato. Assicurati di modificare l'opzione AllowOverride nelle posizioni nel file conf.
Najeeb
abilitando in httpd.conf LoadModule rewrite_module libexec/apache2/mod_rewrite.so ha funzionato su mac. rimuovi il # per abilitarlo
stefanosn
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.
Martin McCallion
+1 Per aver menzionato il modulo rewrite. Non sapevo che non fosse abilitato di default.
Native Coder
Sicuramente serviva quel sudo a2enmod rewrite per farlo funzionare, grazie!
Huskie69
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.
mikeyrocks