Apache 2 cum se configurează redirecționarea urlului

Acest articol este biți. Pentru a adăuga.

Până acum, în RuNet, nu am reușit niciodată să găsesc un articol care explică pe deplin modul de configurare a directivelor RewriteCond și RewriteRule în fișierul .htaccess.







Nicăieri nu există un răspuns la întrebările cele mai de bază: cum merge URL-ul trecut de browser? Cum pot vedea noua adresă URL convertită? Și pot vedea adresa URL de conversie a adresei URL?

Ne este dată o cutie neagră în care trebuie să scriem niște vrăji ciudate, să nu vedem ce se întâmplă în proces și pe cale de ieșire. Nu ne place. Prin urmare, vom înțelege.

Apoi, se presupune că modulul mod_rewrite este conectat la Apache și funcționează și trebuie doar să setăm corect direcțiile de redirecționare a adreselor URL din fișierul .htaccess.

Cum funcționează redirecționarea adresei URL în .htaccess prin modulul mod_rewrite?

Liniile programului nostru condițional sunt directivele modulului mod_rewrite:

  • RewriteEngine - activați / dezactivați redirecționarea. Se utilizează de obicei la începutul dosarului. htaccess în forma:
RewriteEngine activată
  • RewriteBase - definiți directorul rădăcină pentru conversia șirului de adrese URL într-un nume de fișier. Se utilizează de obicei la începutul dosarului. htaccess în forma: RewriteBase /
  • RewriteOptions - setați câteva opțiuni speciale pentru configurația curentă în contextul serverului sau al directorului. Nu o vom lua în considerare aici.
  • RewriteCond este condiția prealabilă pentru directiva RewriteRule. Un RewriteRule poate avea mai multe RewriteCond. Are format:

    RewriteCond that_equal to_compensate

    RewriteRule va fi executat numai dacă toate directivele anterioare RewriteCond au fost în valoarea True.
  • RewriteRule este comanda de conversie URL. Are format:

    RewriteRule source_string (adică, șablon) converted_string (adică substituție) [Flags]







  • Aici vom lua în considerare doar conversia cea mai simplă și cea mai populară: conversia șirului de adrese URL la numele fișierului din resursa în care rulează Apache.

    În ce formă se află adresa URL în .htaccess?

    În fișierul .htaccess, șirul de adrese URL merge fără un protocol și un nume de domeniu.

    Cum se poate vedea conversia URL-ului?

    Până vom vedea transformările pe care le suferă adresa URL când sunt declanșate directivele mod_rewrite. Nu vom putea înțelege funcționarea acestuia și nu vom putea scrie corect fișierul .htaccess.

    Puteți vedea jurnalul transformărilor mod_rewrite din jurnalul Apache. Însă mai întâi trebuie să configurați Apache astfel încât informațiile despre conversia adresei URL să intre în jurnal. Setările pentru versiunile Apache de mai jos 2.4 și Apache 2.4 și de mai sus sunt diferite.

    Pentru Apache până la versiunea 2.4:

    În fișierul de configurare Apache httpd.conf, trebuie să verificați existența directivelor RewriteLog și RewriteLogLevel. (dacă nu este nevoie să le adăugați) și setați următoarele valori la aceste directive:

    # Pentru versiunile Apache de mai jos 2.4

    Calea către fișierul de jurnal trebuie să existe în sistemul de fișiere. În acest fișier vor fi adăugate informații despre transformarea URL-ului.

    Pentru Apache 2.4 și peste:

    În fișierul de configurare Apache httpd.conf, trebuie să găsiți directiva LogLevel și să o setați la:

    # Pentru Apache 2.4 și versiuni ulterioare

    Reconectarea alertei LogLevel: trace3

    Informațiile despre conversia adresei URL vor fi adăugate în jurnalul Apache (verificați, poate, ce este în neregulă, nu am Apache 2.4).

    Apoi trebuie să reporniți Apache. În jurnalele veți vedea despre următoarele intrări:

    rescrie 'admin / vipPortPageId / forward_function' -> 'index.php / admin / vipPortPageId / forward_function'

    RewriteCond: input = '/ small / asdfsadf / avatar.jpg' model = '^ (. *) / (. *) / (. *)' =

    RewriteCond: input = '/ var / www / local.dev / www / small / avatar.jpg' model = '- f' => potrivite

    rewrite 'small / asdfsadf / avatar.jpg' -> '/small/avatar.jpg'

    redirecționare internă cu /small/avatar.jpg [REDIRECT INTERN]

    Atenție vă rog! Logarea rezultatelor transformărilor în mod_rewrite este un proces foarte consumator de timp. Nu permiteți aceste setări pe serverul din semințe. Chiar și pe serverul de testare, configurați înregistrarea, depanați redirecționarea și apoi returnați setările.







    Articole similare

    Trimiteți-le prietenilor: