Puncte:0

Redirecționarea funcționează, trecerea nu

drapel cn

CMS-ul nostru are un handler numit rădăcină, care funcționează: http://example.com/root servește, ceea ce vrem să servească.

Dorim solicitări pentru domeniul „nud” (http://example.com) să fie tratate de același operator în mod automat -- fără a fi necesar /rădăcină a face parte din cerere.

Ceea ce mă așteptam să „funcționeze doar” -- rezultă într-un 404:

RewriteRule ^/*$ /root [L] # Rezultate în 404

Cel mai bun lucru cu care pot veni este o redirecționare, care expune numele rădăcină:

RewriteRule ^/*$ /root [R=permanent,L] # Funcționează

Cum pot face asta fără redirecționare? Am incercat sa adaug PT fara folos...

drapel us
Cred că ar trebui să vă schimbați configurația CMS, astfel încât adresa URL de bază să fie setată corect.Dacă rescrieți adresele URL ale solicitărilor primite, CMS-ul va genera în continuare adrese URL care au prefixul „/root”, ceea ce înseamnă că veți ajunge să aveți conținut duplicat.
drapel cn
Mulțumesc, dar `/root` nu este un director aici -- și nici altfel nu este un prefix...
drapel us
Deci resursele statice și JS sunt servite din `/` în schimb? Ce zici de alte pagini sub `/root`?
drapel cn
Din nou, nu există „sub”... Solicitarea example.com/root servește conținut. Dorim ca cererile de exemplu.com (cu sau fără bară oblică) să fie difuzate _același_ conținut...
Puncte:1
drapel kz
RewriteRule ^/*$ /root [L]

Este OK, totuși, dacă acest lucru funcționează depinde de modul în care CMS-ul tău citește adresa URL solicitată. Cel mai probabil, CMS va citi adresa URL solicitată inițial (care este inclusă în antetele solicitării HTTP), nu adresa URL la care a fost scrisă intern. Deci, CMS vede /, nu /rădăcină. Și dacă nu vede / ca traseu valid, atunci obțineți un 404.

Majoritatea CMS-urilor ar face-o pauză dacă citesc URL-ul rescris, deoarece majoritatea CMS-urilor folosesc un model frontal-controller și rescriu intern toate cererile într-un script comun („controllerul frontal”). Citirea URL-ului rescris în acest caz nu va avea niciun scop, deoarece va fi întotdeauna același (adică URL-ul controlerului frontal).

Rescrierea adresei URL solicitate în acest fel nu va funcționa cu WordPress, Joomla, Drupal etc. etc.

Numai dacă CMS-ul dvs. oferă un mecanism pentru suprascrierea explicită a adresei URL solicitate (de exemplu, cu un parametru URL, poate) puteți face acest lucru la nivel de server, altfel, trebuie să configurați această rută în CMS-ul propriu-zis. (adică, de preferință schimbându-se URL-ul/ruta de la /rădăcină la /, în loc să adăugați acest lucru ca „alias”, care ar putea cauza conținut duplicat probleme.)

drapel cn
Mulțumesc, asta explică de ce avem o problemă. Dar în ceea ce privește soluția -- în afară de săparea în interiorul CMS, nu există un semnal pentru mod_rewrite, care ar schimba și adresa URL transmisă (fără o redirecționare)?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.