mod_rewrite kasutamine lihtsam

mod_rewrite logoLugu siis järgmine, et nüüdsest saab meie serverites mod_rewrite’t lihtsamalt kasutada 🙂

Täpsemalt öeldes: nüüdsest saab .htaccess failidesse lisada Rewrite* reeglistikke ja need töötavad momentaalselt, ilma et neid peaks sisestama DataZone haldusliidese kaudu. Enne andis server sellise tegevuse peale Error 500 (Internal Server Error), milles olev eesti keelne tekst palus klienti minna DataZone haldusliidesesse ning sisestada .htaccessis olevad keelatud direktiivid sealtkaudu.

Selle piirangu põhjus seisnes selles, et Apache .htaccess failides on võimalik kasutada igasuguseid direktiive, mille (vääriti) kasutamine võib mõjuda halvasti serveri tervisele. Paraku seda, milliseid direktiive konkreetselt .htaccess failist kasutada tohib, Apache enda vahenditega reguleerida ei saa.

Kes arvab, et selleks sobib AllowOverride, siis tollega saab muuta korraga vaid terve suure portsu direktiivide lubamist/keelamist .htaccess failis. See ei sobi, kui tahta keelata vaid ühte konkreetset “ohtlikku” direktiivi või lausa sellele antavat parameetrit.

Sisestades direktiivid läbi DataZone teostab nende kontrolli DataZone haldusliides skripti tasandil. Selle negatiivne pool seisneb aga selles, et muudatused ei jõua serverisse momentaalselt vaid mõne minutilise hilinemisega.

Kuna sealt sisestatud direktiivid pannakse otse domeeni <virtualhost ip></virtualhost> märgendite vahele (virtualhost context), siis et .htaccess failiga analoogset käitumist saavutada, tuleb osad direktiivid sisestada veel eraldi <directory kataloog></directory> märgendite vahele (directory context), mis paljudele kasutajatele on esmakordne ja tundmatu ning tekitab palju probleeme.


Üha suurema nõudluse tõttu just mod_rewrite järgi täiendasime Apache2 lähtekoodi, mis nüüdsest võimaldab meil täpselt kontrollida, mis nimega/parameetritega direktiive .htaccess faili sisestada saab ning mis on keelatud. Keelatud direktiivi või selle parameetri kohta antakse kliendi error_log-i täpne teade koos reanumbriga, kus ta .htaccess failis esineb. Järgnevalt ka kokkuvõte kõigist direktiividest, mida .htaccess-is kasutada saab:

  1. Direktiivid, mis Apache dokumentatsiooni kohaselt nõuavad AuthConfig, Indexes või Limit õigust.
  2. Options – lubatud on kõik parameetrid peale All ja ExecCGI. Juhul kui parameetris sisaldub FollowSymLinks, siis muudetakse see vaikides ümber SymLinksIfOwnermatch-iks.
  3. SetHandler/AddHandler – lubatud on parameetrid default-handler ja none
  4. ForceType/AddType/DefaultType – kõik parameetrid on lubatud aga kui parameetriks on application/x-httpd-php, siis seda rida ignoreeritakse, kuna PHP interpretaatori liitmist faililaienditega tuleb teha DataZonest eraldi valiku alt Konfiguratsioon selle teostamiseks sõltub PHP rezhiimist!
  5. RewriteRule – lubatud on kõik parameetrid peale Proxy kasutamise kolmandas parameetris
  6. Kõik järgmised direktiivid sõltumata parameetritest:
    1. RewriteCond
    2. RewriteBase
    3. RewriteEngine
    4. AcceptPathInfo
    5. ErrorDocument
    6. Addlanguage
    7. AddCharset
    8. AddDefaultCharset
    9. AddEncoding
    10. DefaultLanguage
    11. RemoveCharset
    12. RemoveEncoding
    13. RemoveLanguage
    14. LanguagePriority
    15. RemoveType
    16. RemoveHandler
    17. Redirect
    18. RedirectMatch
    19. RedirectTemp
    20. RedirectPermanent