I miei permalink sono rotti! Posso usare mod_rewrite per ignorare un file fisico?
Un sito web su cui lavoro ha recentemente pubblicato un file alla radice del sito chiamato "2011.html". Ora, tutti i post del blog del 2011 con la struttura di permalink anno/mese/giorno/nome-post non funzionano e invece caricano il file 2011.html. Provando ad accedere all'archivio su domain.com/2011/ viene erroneamente visualizzato il file. Gli anni 2010 e altri funzionano come previsto.
Esiste un modo per usare mod_rewrite per riconoscere questo file solo quando 2011.html è esplicitamente nell'URL, e usare la struttura standard dei permalink per tutti gli altri URL in modo da ripristinare la funzionalità del blog?
Il link a questo file è stato inviato in una email di marketing e sta ricevendo molto traffico, quindi non può essere spostato o rinominato.

Il motivo per cui ciò accade è dovuto alla negoziazione dei contenuti. /2011.html
normalmente non sarebbe accessibile tramite /2011/
, ma la negoziazione dei contenuti fa sì che Apache cerchi automaticamente file denominati 2011
(con qualsiasi estensione) quando non riesce a trovare la cartella, prima di passare il controllo a WordPress.
Questa funzionalità può essere abbastanza utile, ma se non hai particolarmente bisogno della negoziazione dei contenuti (WordPress stesso non ne ha bisogno), puoi disattivarla aggiungendo questo al tuo .htaccess
:
Options -MultiViews
Se ciò non funziona, o se hai effettivamente bisogno della negoziazione dei contenuti, potresti rinominare il file 2011.html
con un altro nome e utilizzare mod_rewrite per assicurarti che il collegamento continui a funzionare. Ad esempio, rinomina 2011.html
in happynewyear.html
e poi aggiungi questo al tuo .htaccess
(prima delle altre RewriteRules):
RewriteRule ^2011\.html happynewyear.html [L]

Sì, questo è esattamente il tipo di cosa per cui è stato progettato mod_rewrite. Tuttavia, dovrai spostare il contenuto del blog in un'altra posizione.
Ad esempio, se /2011/11/1/how-to-brew-beer.html fosse uno degli articoli del blog, non è più accessibile lì poiché ora è un link rotto. Quindi dovrai spostarlo da qualche altra parte:
/2011_good/11/1/how-to-brew-beer.html
La tua regola di riscrittura dovrà corrispondere a qualsiasi cosa inizi con /2011/.* e riscriverla nell'URL che ho pubblicato sopra, assumendo che sia la posizione in cui sono stati spostati gli articoli.
Spostare il contenuto potrebbe rivelarsi un lavoro molto impegnativo. In realtà penso che sia molto meglio spostare semplicemente il file 2011.html da qualche altra parte e poi utilizzare una regola di riscrittura per esso poiché è solo un file rispetto a qualsiasi informazione storica.
Ovviamente, siamo solo 7 giorni nel 2011, quindi non posso immaginare che ci siano così tanti post da migrare per il 2011 :)
