Permalink-urile mele nu funcționează! Pot folosi mod_rewrite pentru a ignora un fișier fizic?

7 ian. 2011, 06:50:51
Vizualizări: 377
Voturi: 5

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.

0
Toate răspunsurile la întrebare 2
1
10

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]
7 ian. 2011 13:00:42
Comentarii

Dezactivarea negocierii conținutului a funcționat excelent, mulțumesc!

Nate Dudek Nate Dudek
7 ian. 2011 15:08:46
0

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 :)

7 ian. 2011 09:15:28