Cum adaug prefixul /blog/ la structura permalink pentru articole de blog, pagini cu etichete etc.?
Folosesc WordPress 3.1.3 ca CMS complet, instalat în directorul rădăcină al unui domeniu. L-am configurat folosind opțiunile integrate pentru a avea o pagină statică ca pagină principală și apoi blogul meu la http://www.example.com/blog
.
Ceea ce doresc este ca articolele individuale de blog, paginile de categorii, paginile de arhivă, paginile cu etichete și orice alte pagini legate de blog să aibă prefixul /blog/
în structura lor de link. Astfel, URL-ul unui articol ar fi www.example.com/blog/titlu-articol
Momentan, doar paginile de categorii funcționează corect. Acest lucru a fost realizat prin adăugarea următoarei linii în fișierul meu .htaccess
:
RewriteRule ^category/(.+)$ http://www.example.com/$1 [R=301,L]
Apoi, am setat Baza Categoriei la "blog" în pagina Setări Permalink din WordPress. Aceasta oferă paginilor de categorii URL-ul: www.example.com/blog/nume-categorie
(fără a elimina prefixul categoriei în .htaccess
, acestea aveau URL-ul category/blog/nume-categorie
).
În încercarea de a face acest lucru să funcționeze pentru celelalte elemente dorite, am setat Baza Etichetelor la "blog." De asemenea, am făcut Structura Permalink Personalizată: /blog/%postname%
(așa cum a fost sugerat de câteva discuții găsite pe Google).
Aceste setări oferă URL-urilor pentru articolele individuale de blog, paginile de etichete și paginile de arhivă structura URL pe care o caut. Cu toate acestea, toate duc la erori 404.
Am șters fișierul meu .htaccess
pentru a mă asigura că WordPress scrie în el, și o face. Dacă elimin /blog/
din structura permalink, totul funcționează corect, dar nu mai am structura URL pe care o doresc.
Nu mai știu ce să fac. Continui să citesc discuții și ghiduri care spun că este la fel de simplu ca adăugarea /blog/
la structura permalink, dar până acum nu a fost nici pe departe atât de simplu.
Conținutul .htaccess
:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Primești erori 404 când adaugi /blog/
la structura personalizată a permalink-urilor și apoi adaugi și /blog/
la baza categoriilor. Ar trebui să fie adăugat doar într-un singur loc, în structura personalizată a permalink-urilor.
Dacă lași baza categoriilor și baza etichetelor goale și doar adaugi /blog/
în fața structurii personalizate a permalink-urilor, astfel încât să arate așa /blog/%postname%
- vei obține rezultatul dorit.
Paginile tale vor arăta astfel: domeniu.exemplu/numelepagini/
URL-ul postării va arăta astfel: domeniu.exemplu/blog/numelepostului
URL-ul categoriei va arăta astfel: domeniu.exemplu/blog/categorie/numelepostului

Bună observație cu adăugarea doar într-o singură secțiune. Această soluție va adăuga și /blog/ la paginile de categorii și arhivă, ceea ce este bine. Aceasta ar trebui să fie răspunsul acceptat.

Mă bucur că această metodă se aplică și la URL-ul paginii de categorii.

Asta a fost unul dintre primele lucruri pe care le-am încercat și rezulta în erori 404. Așa că l-am dezactivat pentru câteva ore și am decis să încerc din nou după ce am citit răspunsul tău. Acum funcționează pentru paginile mele de articole individuale. Am reușit să fac să funcționeze din nou și paginile de categorii. Rămân doar paginile de etichete și paginile de arhivă care au nevoie de /blog/ în ele.

Dacă te uiți pe pagină, există un loc și pentru etichete. În ceea ce privește paginile de arhivă, te referi la pagina care afișează lista de articole, etichete, categorii etc. sau la postările arhivate?

Pentru etichete, dacă adaug blog în zona Tag Base, îmi dă structura corectă a URL-ului "mydomain.com/blog/nume-eticheta" dar acea pagină îmi dă apoi o eroare 404. Referitor la arhive, mă refer la pagina care afișează postările arhivate pentru o anumită lună. Aș dori ca URL-ul să fie mydomain.com/blog/2011/05. Această structură de URL apare când dau click pe o legătură de arhivă, dar dă și ea o eroare 404. Și acum primesc din nou erori 404 pentru postările individuale de pe blog. Ar putea fi un plugin care cauzează probleme?

Cred că da, WordPress adaugă regulile de rescriere ori de câte ori le modific. Ar trebui să existe ceva anume acolo pentru ceva de genul acesta?

mai întâi verifică dacă fișierul tău .htaccess există, dacă nu, trebuie să obții conținutul acestuia și să-l creezi tu.

Există, și am eliminat celelalte lucruri pe care le-am adăugat, așa că tot ce rămâne este ceea ce este mai jos (cu liniile de cod corecte), și tot primesc erori 404 pentru toate paginile în afară de cele de categorie.
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
Apreciez că îmi acorzi timpul să mă ajuți.

Data viitoare postează codul direct în întrebarea ta, folosind tag-uri de cod. O să editez eu postul tău cu el, dar nu va fi vizibil până când un moderator nu îl verifică. Încearcă să elimini linia RewriteBase /, uneori serverul nu are nevoie de ea sau poate genera o eroare.

Sigur, îmi cer scuze pentru asta.
Am eliminat linia, dar tot primesc erori 404 ca înainte.

ai un link pe care îl pot încerca? dacă nu, e în regulă. Vreau doar să văd dacă afectează doar pe tine sau pe toată lumea. De asemenea, ai citit pagina codex despre asta http://codex.wordpress.org/Using_Permalinks în special spre final.

asta este ceva ce am primit de la un coleg membru @toscho, a spus să încerc să adaug această linie ^blog/category/(.+)$ în loc de cea anterioară

ignoră ultimul comentariu. Doar dacă funcționează mai bine pentru tine. Din păcate, sunt puțin blocat la acest subiect. Ai verificat dacă serverul tău funcționează cu asta?

Cred că am reușit să rezolv majoritatea problemelor. Am eliminat "blog" din Baza de Categorii și, din nu știu ce motiv, totul funcționează acum cu excepția paginilor de categorii. Acum am această linie în fișierul meu .htaccess RewriteRule ^blog/category/(.+)$ http://www.dvorakdesigns.com/$1 [R=301,L]
, dar paginile de categorii apar ca dvorakdesigns.com/category/numele-categoriei. A fost asta implementarea corectă conform indicatiilor pe care ți le-a dat toscho?

Și tu vrei /blog/category/numele-categoriei sau /blog/numele-categoriei

Dacă blog/categorie/nume-categorie este posibil, asta ar fi ideal. Altfel, blog/nume-categorie este în regulă.

Trebuie să mă gândesc la asta. Între timp, încearcă să cauți pe Google despre acest subiect.

Cred că am rezolvat. A fost la fel de simplu ca adăugarea blog/categorie ca Bază pentru Categorii, și apoi blog/etichetă ca Bază pentru Etichete. Cu aceasta în fișierul .htaccess: RewriteRule ^category/(.+)$ http://www.dvorakdesigns.com/$1 [R=301,L]
(acest lucru previne ca URL-ul să fie categoria/blog/categorie). Să sperăm că totul va rămâne funcțional! Mulțumesc foarte mult pentru toată ajutorul.

Această soluție nu funcționează pentru mine. Am o taxonomie care se mută de la /mytaxonomy
la /blog/mytaxonomy
când fac asta, ceea ce nu vreau. Am nevoie de /blog
pentru articole și /mytaxonomy
pentru elementele de taxonomie.
