Le regole di riscrittura non funzionano in WordPress

25 nov 2013, 10:37:06
Visualizzazioni: 22.7K
Voti: 8

Sto cercando di aggiungere nuove regole di riscrittura utilizzando l'API di riscrittura:

// Aggiungi regola per prodotti con ASIN
add_rewrite_rule('product/([A-Z0-9]{10})', 'index.php/product/?asin=$1', 'bottom');
// Aggiungi regola per prodotti generici
add_rewrite_rule('product/(([A-Za-z0-9_])*)', 'index.php/product/?product=$1', 'bottom');
// Aggiungi regola per confronto prodotti
add_rewrite_rule('compare/((([A-Z0-9]{10}),?)*)', 'index.php/compare/?asin=$1', 'bottom');
// Aggiungi regola per categorie
add_rewrite_rule('categories/(([A-Za-z0-9]|\-|\_)*)', 'index.php/categories/?subcategory=$1', 'bottom');

Dopo l'aggiornamento dei permalink, vengono aggiunte le seguenti righe al file .htaccess:

RewriteRule ^product/([A-Z0-9]{10}) /index.php/product/?asin=$1 [QSA,L]
RewriteRule ^product/(([A-Za-z0-9_])*) /index.php/product/?product=$1 [QSA,L]
RewriteRule ^compare/((([A-Z0-9]{10}),?)*) /index.php/compare/?asin=$1 [QSA,L]
RewriteRule ^categories/(([A-Za-z0-9]|\-|\_)*) /index.php/categories/?subcategory=$1 [QSA,L]

Risultando nel seguente file .htaccess completo:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^product/([A-Z0-9]{10}) /index.php/product/?asin=$1 [QSA,L]
RewriteRule ^product/(([A-Za-z0-9_])*) /index.php/product/?product=$1 [QSA,L]
RewriteRule ^compare/((([A-Z0-9]{10}),?)*) /index.php/compare/?asin=$1 [QSA,L]
RewriteRule ^categories/(([A-Za-z0-9]|\-|\_)*) /index.php/categories/?subcategory=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Ma quando provo ad accedere al seguente URL:

http://example.com/product/ABCDE324AB

Non sembra funzionare. Ricevo sempre una pagina "non trovata". Qualche idea?

3
Commenti

è una pagina 404 di WordPress o del server?

Mark Kaplun Mark Kaplun
25 nov 2013 13:10:55

Una volta apportate le modifiche, non dimenticare di andare su Impostazioni > Permalink e cliccare Salva per ripulire le regole di riscrittura.

TomC TomC
25 nov 2013 14:10:20

sì, ho già ripulito le regole di riscrittura usando il permalink 'nome articolo' e salvando, ma ancora non funziona.

soul soul
26 nov 2013 01:44:40
Tutte le risposte alla domanda 1
7
11

Da quanto ho capito sopra, hai il file .htaccess e anche il codice corretto scritto nello stesso file, ma continui a ricevere l'errore 404. Lasciami spiegare il perché. Il tuo server non sta permettendo la lettura o l'override delle autorizzazioni del file .htaccess. Quindi, come puoi concedere questa autorizzazione? Apri il tuo file Apache httpd.conf, cerca "AllowOverride" e vedrai che è presente più volte. Cerca il seguente commento nello stesso file:

# AllowOverride controlla quali direttive possono essere inserite nei file .htaccess.
    # Può essere "All", "None" o qualsiasi combinazione delle seguenti parole chiave:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None

Sostituisci semplicemente AllowOverride None con AllowOverride All

Ora riavvia APACHE e dovrebbe funzionare

25 nov 2013 14:02:21
Commenti

Questo può anche aiutarti: http://httpd.apache.org/docs/current/mod/core.html#allowoverride

Manish Manish
25 nov 2013 14:04:33

Sembra che l'override stia effettivamente funzionando perché quando ho fatto riferimento a un file esterno a WordPress è riuscito a seguire le regole di riscrittura. Semplicemente non capisco perché non funzioni con le pagine di WordPress.

soul soul
26 nov 2013 09:43:56

Ok, prova a fare una cosa. Fai un backup del tuo file htaccess e rimuovi tutto il codice, poi aggiungi il codice htaccess predefinito a questo file. Quindi vai alla pagina dei permalink e seleziona il permalink predefinito. Dopodiché accedi al sito, sono sicuro che funzionerà. Poi prova con altre impostazioni di permalink.

Manish Manish
26 nov 2013 19:05:16

neanche questo funziona

soul soul
18 dic 2013 05:12:43

Vuoi dire che non riesci ad accedere al sito con il permalink predefinito?

Manish Manish
18 dic 2013 07:55:01

il permalink predefinito funziona quando inserisco qualcosa come site.com?page_id=7 ma le regole di riscrittura personalizzate che ho aggiunto ancora non funzionano. Non funzionerà davvero se uso solo il permalink predefinito, ma se uso il permalink con il nome del post non funziona neanche quello

soul soul
18 dic 2013 09:50:19

quale plugin stai usando per le regole di riscrittura?

Manish Manish
18 dic 2013 16:20:53
Mostra i restanti 2 commenti