---
title: "mod_rewrite kasutamine lihtsam"
canonical_url: "https://www.zone.ee/blogi/mod_rewrite-kasutamine-lihtsam/"
post_type: "post"
published: "2007-10-23T09:17:57+00:00"
modified: "2007-10-23T09:17:57+00:00"
author: "Jaanus Putting"
taxonomies:
  category:
    - name: "Zone.ee Blog"
      url: "https://www.zone.ee/blogi/category/zone-ee-blog/"
  post_tag:
    - name: "Apache"
      url: "https://www.zone.ee/blogi/tag/apache/"
    - name: "DataZone"
      url: "https://www.zone.ee/blogi/tag/datazone/"
    - name: "mod_rewrite"
      url: "https://www.zone.ee/blogi/tag/mod_rewrite/"
    - name: "Tehniline"
      url: "https://www.zone.ee/blogi/tag/tehniline/"
    - name: "Uuendused"
      url: "https://www.zone.ee/blogi/tag/uuendused/"
---

# mod_rewrite kasutamine lihtsam

![mod_rewrite logo](https://www.zone.ee/static/sites/2/2007/10/mod_rewrite_logo.thumbnail.gif "mod_rewrite logo")Lugu siis järgmine, et nüüdsest saab meie serverites mod\_rewrite’t lihtsamalt kasutada ð&#159;&#153;&#130;

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](http://httpd.apache.org/docs/2.0/mod/core.html#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 **&lt;virtualhost** *ip***&gt;**…**&lt;/virtualhost&gt;** märgendite vahele (*virtualhost [context](http://httpd.apache.org/docs/2.0/mod/directive-dict.html#Context)*), siis et .htaccess failiga analoogset käitumist saavutada, tuleb osad direktiivid sisestada veel eraldi **&lt;directory** *kataloog***&gt;**…**&lt;/directory&gt;** märgendite vahele (*directory [context](http://httpd.apache.org/docs/2.0/mod/directive-dict.html#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](http://httpd.apache.org/docs/2.0/mod/directives.html) kohaselt nõuavad *AuthConfig*, *Indexes* või *Limit* [õigust](http://httpd.apache.org/docs/2.0/mod/directive-dict.html#Override).
2. [**Options**](http://httpd.apache.org/docs/2.0/mod/core.html#options) – lubatud on kõik parameetrid peale *All* ja *ExecCGI*. Juhul kui parameetris sisaldub *FollowSymLinks*, siis muudetakse see vaikides ümber *SymLinksIfOwnermatch*-iks.
3. **[SetHandler](http://httpd.apache.org/docs/2.0/mod/core.html#sethandler)/[AddHandler](http://httpd.apache.org/docs/2.0/mod/mod_mime.html#addhandler)** – lubatud on parameetrid *default-handler* ja *none*
4. **[ForceType](http://httpd.apache.org/docs/2.0/mod/core.html#forcetype)/[AddType](http://httpd.apache.org/docs/2.0/mod/mod_mime.html#addtype)/[DefaultType](http://httpd.apache.org/docs/2.0/mod/core.html#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**](http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#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
