Permalink-urile mele nu funcționează! Pot folosi mod_rewrite pentru a ignora un fișier fizic?
Un site la care lucrez a postat recent un fișier în rădăcina site-ului numit "2011.html". Acum, orice articol de blog din 2011 cu structura de permalink an/lună/zi/nume-post nu funcționează și în schimb se încarcă fișierul 2011.html. Încercarea de a accesa arhiva la domain.com/2011/ afișează în mod eronat fișierul. Anii 2010 și alți ani funcționează conform așteptărilor.
Există vreo metodă prin care pot folosi mod_rewrite pentru a recunoaște acest fișier doar când 2011.html este explicit menționat în URL și să folosesc structura standard de permalink-uri pentru orice alt URL, astfel încât funcționalitatea blogului să fie restabilită?
Link-ul către acest fișier a fost trimis într-un e-mail de marketing și primește mult trafic, așa că nu poate fi mutat sau redenumit.

Motivul pentru care se întâmplă acest lucru este negocierea conținutului. În mod normal, /2011.html
nu ar fi accesibil prin /2011/
, dar negocierea conținutului face ca Apache să caute automat fișiere denumite 2011
(indiferent de extensie) atunci când nu găsește folderul, înainte de a transmite controlul WordPress.
Această funcționalitate poate fi utilă, dar dacă nu aveți nevoie în mod special de negocierea conținutului (WordPress în sine nu are nevoie de ea), o puteți dezactiva adăugând următoarea linie în fișierul .htaccess
:
Options -MultiViews
Dacă această soluție nu funcționează sau dacă aveți nevoie de negocierea conținutului, puteți redenumi fișierul 2011.html
în altceva și utiliza mod_rewrite pentru a vă asigura că linkul continuă să funcționeze. De exemplu, redenumiți 2011.html
în happynewyear.html
și apoi adăugați următoarea linie în fișierul .htaccess
(înaintea altor reguli RewriteRule):
RewriteRule ^2011\.html happynewyear.html [L]

Da, exact pentru astfel de situații a fost creat mod_rewrite. Cu toate acestea, va trebui să mutați conținutul blogului într-o altă locație.
De exemplu, dacă /2011/11/1/how-to-brew-beer.html era unul dintre articolele de blog, acesta nu mai este accesibil acolo, deoarece acum este un link invalid. Așadar, va trebui să îl mutați altundeva:
/2011_good/11/1/how-to-brew-beer.html
Regula de rescriere va trebui să se potrivească cu orice URL care începe cu /2011/.* și să îl rescrie la URL-ul menționat mai sus, presupunând că acolo au fost mutate articolele.
Mutarea conținutului s-ar putea dovedi a fi o muncă îndelungată. Cred că ar fi mult mai bine să mutați fișierul 2011.html altundeva și apoi să folosiți o regulă de rescriere pentru acesta, deoarece este doar un singur fișier, spre deosebire de orice alte informații istorice.
Desigur, suntem în doar 7 zile din 2011 acum, așa că nu-mi pot imagina că există atât de multe postări de migrat pentru 2011 :)
