Perché i permalink funzionano con /index.php/%postname% ma non con solo %postname%?

12 lug 2011, 14:33:21
Visualizzazioni: 28.5K
Voti: 7

Sto avendo un problema con i permalink di WordPress. Quando cambio i permalink in pretty permalinks ottengo solo errori 404 per le pagine. La cosa strana è che quando uso /index.php/%postname% i link delle pagine funzionano correttamente, ma ho bisogno di eliminare la parte index.php.

Ho letto riguardo alle modifiche da fare al file httpd.conf ma non riesco a trovare il file da nessuna parte. Il file htaccess è corretto per quanto ne so, eccolo qui sotto

# 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

Avete altre idee?

Grazie Emma

9
Commenti

qual è il tuo host?

Bainternet Bainternet
12 lug 2011 14:41:26

Ehi, è un'azienda locale, gestisce un server dal loro negozio. Hanno un pannello web molto basilare!

emmahiggy emmahiggy
12 lug 2011 15:20:52

Forse controlla i permessi del file .htaccess. Forse WordPress non riesce ad accedervi?

Cristian Cristian
12 lug 2011 15:38:34

Ho impostato i permessi del file htaccess a 644, il permalink cambia ma le pagine non si aggiornano di conseguenza, quindi ottengo errori 404 anche quando il permalink è corretto.

emmahiggy emmahiggy
12 lug 2011 17:28:01

Qual è il valore esatto delle impostazioni dei permalink?

Alex Older Alex Older
12 lug 2011 17:39:19

È una struttura personalizzata di /index.php/%postname%

emmahiggy emmahiggy
12 lug 2011 18:33:36

Questo sito è ospitato su un server Linux? Ho avuto questo problema sul sito di un cliente, ma era un server Windows.

Jeremy Jared Jeremy Jared
12 lug 2011 21:37:14

È un server Windows, proverò la tua soluzione qui sotto e ti farò sapere come va. Grazie mille.

emmahiggy emmahiggy
13 lug 2011 17:11:19

Oddio non posso credere che questo errore esista ancora nel 2021

Bharat Bharat
1 gen 2021 22:48:37
Mostra i restanti 4 commenti
Tutte le risposte alla domanda 13
2
12

Avevo tutto il codice corretto nel file .htaccess, ma è stato completamente sovrascritto dal file predefinito di Ubuntu /etc/apache2/apache2.conf. Ho modificato la voce per / e /var/www da AllowOverride None a AllowOverride All, ho riavviato Apache e ora tutto funziona perfettamente.

29 apr 2015 21:35:38
Commenti

Ha funzionato !! Grazie

Bharat Bharat
1 gen 2021 22:48:51

Fantastico, ha funzionato. Questo dovrebbe essere aggiornato nel manuale da qualche parte

Jonathan S. Fisher Jonathan S. Fisher
1 set 2021 20:40:20
0

La mia ipotesi è che mod_rewrite non sia abilitato. A seconda del server che stai utilizzando, abilita mod_rewrite.

Quindi, se sei su Linux, modifica manualmente /etc/apache2/sites-enabled/000-default e cambia AllowOverride da None a All (o dove si trova la directory del tuo sito).

Qui, ai punti 3 e 4 dovrebbero esserci le soluzioni per Windows.

13 lug 2011 23:56:04
0

Sto lavorando su un problema simile da ieri e alla fine ho trovato la mia soluzione.

1) Assicurati che il tuo file .htaccess abbia i permessi 666

2) Abilita il modulo mod_rewrite:

sudo a2enmod rewrite

3) Riavvia Apache:

sudo systemctl restart apache2

4) Imposta AllowOverride All per la directory pubblica in /etc/apache2/apache2.conf

<Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

5) Riavvia Apache:

sudo systemctl restart apache2

6) Vai alla dashboard di WordPress e modifica le impostazioni dei permalink (se sei su postname, cambia in plain, o viceversa). Visualizza il sito per verificare.

7) Torna alla dashboard e reimposta le impostazioni dei permalink come desideri.

8) Ripristina i permessi del file .htaccess a 644

Questo ha funzionato per me.

26 mar 2019 06:21:46
0

Per caso stai utilizzando Names.co.uk come tuo host?

Ho avuto lo stesso problema e dopo un paio d'ore di ricerche su Google ho scoperto che utilizzano un server Zeus - non Apache - e che non supporta la funzione Mod_ReWrite. Questo sembra spiegare i sintomi confusi. (Non avevo un file .htaccess - ma WordPress non segnalava alcun errore quando modificavo le preferenze dei permalink.)

Hanno una soluzione alternativa per Zeus, dettagliata qui:

http://www.names.co.uk/support/hosting/linux_hosting/1119-wordpress_rewrite_script.html

Mi rendo conto che sono passati un paio di mesi dal tuo post originale e probabilmente l'hai già risolto - ma per chiunque trovi questo messaggio in futuro, sarebbe una buona idea verificare se il tuo host utilizza Zeus o qualche altro server non-Apache.

Aggiornamento: Consulta il codice che ho pubblicato qui su una domanda simile

20 set 2012 04:26:13
1

Ho combattuto con questo problema per un po' e oggi l'ho finalmente risolto. Ho scoperto che il mio mod_rewrite non era abilitato tutto questo tempo. Ho trovato molto utile le informazioni su questo link. Spiega tutto, da come verificare se mod_rewrite è abilitato, e se non lo è - come abilitarlo. Spero che queste informazioni siano utili per chiunque sia nuovo a WP e abbia difficoltà con l'impostazione dei permalink ottimizzati.

8 gen 2016 14:05:33
Commenti

Tutte le informazioni rilevanti dovrebbero far parte della tua risposta, in particolare la tua risposta non dovrebbe dipendere da link esterni, perché le informazioni presenti potrebbero scomparire e quindi la tua risposta diventerebbe più o meno inutile. Potresti per favore aggiungere le informazioni alla tua risposta - grazie.

Nicolai Grossherr Nicolai Grossherr
8 gen 2016 15:46:06
0

Prova a impostare il file htaccess a 777, poi entra e aggiorna le impostazioni dei permalink come desideri. Se funziona, torna indietro e reimpostalo a 644.

12 lug 2011 21:30:29
1

Dopo aver aggiunto il mio contenuto, ho trovato un articolo che suggeriva di eliminare il file .htaccess, poi andare su Impostazioni/permalink e rimuovere index.php. L'articolo diceva che WordPress avrebbe mostrato un errore suggerendo di creare il file .htaccess. Ho deciso di provare ma non è successo nulla. Quello che ho scoperto è che i miei permalink continuavano a funzionare anche con il file .htaccess eliminato. All'inizio questo mi ha lasciato perplesso. Ho aperto il mio client FTP e ho navigato tra i miei file. Ho notato che c'era ancora un file .htaccess nonostante l'avessi cancellato. Non so se sia stato WordPress, il mio account di hosting o cosa esattamente a ricrearlo, ma so che questa è una novità. Prima non succedeva. Potresti provare questo metodo se tutto il resto fallisce.

Non sono riuscito a riprodurre il problema nella tua domanda quindi non sono sicuro al 100% che funzioni per te. Ma vale la pena provare.

Saluti, Jeremy Jared

12 lug 2011 21:47:53
Commenti

Ciao, ho provato quanto sopra senza successo, il file htaccess non si è ricreato, ma l'impostazione dei permalink non funzionava quindi ho semplicemente ricaricato nuovamente il file htaccess. Grazie comunque

emmahiggy emmahiggy
13 lug 2011 18:18:07
0

Prova a sostituire il codice .htaccess con questo:

# -------------------------------------------------------------------------
# Opzioni del Motore di Rewrite
# -------------------------------------------------------------------------

RewriteEngine On
RewriteCompatibility2 On
RepeatLimit 200
RewriteBase
RewriteRule ^/index.php$ / [NC,P,R=301]
RewriteCond %{REQUEST_URI} !/wp-admin
RewriteRule ^/(.*)/$ /index.php/$1 [NC]

# Reindirizza 'www.tuosito.com/qualcosa/qualcosa/index.php'
# verso 'www.tuosito.com/qualcosa/qualcosa/'

RewriteRule ^/(.*)/index.php$ /$1/ [NC,P,R=301]

# -------------------------------------------------------------------------
# FINE REWRITES
# -------------------------------------------------------------------------

Avevo ancora le credenziali di accesso di un cliente per cui ho dovuto risolvere questo problema. Questo è ciò che ho usato per lui. Si tratta di un server IIS, non sono sicuro se questo influisca ma puoi provarlo. Buona fortuna, JJ

13 lug 2011 18:43:50
0

Penso che il tuo host utilizzi IIS (Internet Information Services). IIS utilizza "URL Rewrite" e non "mod_rewrite", quindi dai un'occhiata al Codex.

I permalink "belli" di solito richiedono mod_rewrite, e IIS (comune sui server Windows) non supporta mod_rewrite. (Se stai utilizzando Apache 2.0.54, su Windows, mod_rewrite potrebbe funzionare, a condizione che sia abilitato in apache\conf\httpd.conf.)

20 nov 2012 23:42:05
2

So che è troppo tardi per rispondere ora, ma se stai ancora cercando una soluzione; ecco un modo rapido per farlo:

Risolto - Come Rimuovere Index.php Dagli URL di WordPress Su IIS7?

10 mar 2013 15:05:08
Commenti

Per favore, aggiungi una soluzione alla tua risposta, se il link muore, non sarà più utile.

brasofilo brasofilo
10 mar 2013 16:34:21

@brasofilo Santa Madonna....! Link morto! ;)

Sunny R Gupta Sunny R Gupta
15 ott 2014 17:24:48
0

Stavo riscontrando questo problema su Mac OSX e la seguente soluzione è stata molto utile. Sembra che di default i Mac non siano pronti per .htaccess e Apache ignorerà il file fino a quando alcuni file (specificati nei link qui sotto) non vengono modificati:

http://wordpress.org/support/topic/getting-pretty-permalinks-working-on-a-mac-105-server

http://clagnut.com/blog/350/

Spero che possa aiutare!

14 mar 2013 07:26:47
0

Questo è per il server Apache: Prima controlla il tuo virtual host se stai usando quello predefinito, verifica che la directory root di WordPress abbia questo

  <Directory ROOT_DIR_FOR_WORDPRESS>  
            php_admin_flag engine on  
            AllowOverride All  
            Order allow,deny  
            allow from all  
            RewriteEngine On  
            RewriteOptions Inherit  
            Require all granted  
    </Directory>  

verifica che il file .htaccess nella root di WordPress abbia i permessi di lettura e scrittura (666) e contenga

# 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  

Abilita mod_rewrite (sudo a2enmod rewrite - per utenti Linux)

Ora aggiorna i permalink struttura personalizzata: /%postname%/

salva e controlla eventuali errori Ora dovrebbe funzionare

Il più delle volte il problema è che il tuo .htaccess viene sovrascritto dalle regole del virtual host

22 lug 2016 08:16:29
1

Devi eseguire sudo a2enmod rewrite per abilitare il modulo rewrite

20 feb 2019 18:59:59
Commenti

Benvenuto su WPSE. Dovresti fornire maggiori dettagli nella tua risposta per le persone che potrebbero non sapere di cosa stai parlando qui. Più dettagli sono sempre meglio, altrimenti ti ritroverai con persone che chiedono: "Dove trovo sudo nel pannello di amministrazione di WP?" (Inoltre, dovresti specificare altri dettagli, notando che questo potrebbe non funzionare in tutti i casi poiché a2enmod è un comando specifico per Debian.)

butlerblog butlerblog
20 feb 2019 19:45:00