Rewrite pro Microsoft IIS
Nedávno jsem řešil možnost rewritování URL na microsoftím IIS. Microsoft sám žádný modul pro rewritování URL nenabízí a tak jsem se musel poohlédnout po produktech třetích stran.
Z těch jsem nakonec vybral do užšího výběru následující:
http://www.isapirewrite.com nabízí rewritovaci modul pro IIS za 69$ i omezenou FREE verzi zdarma
http://www.qwerksoft.com/products/iisrewrite/ za $99.00 v akční slevě
http://cheeso.members.winisp.net/IIRF.aspx který doporučuje i Microsoft na svých stránkách k IIS.
Nakonec jsem vybral Ionic IsapiRewrite (třetí v pořadí), který má na svědomí Ionic Shade alias Cheeso, instalačka včetně zdrojových kódů má 0.35 MB.
Syntaxe je obdobná jako u apachovského mod_rewrite modulu, některé přepínače jsou také stejné.
Pravidla lze navěsit na následující události:
IterationLimit
MaxMatchCount
RewriteRule
RewriteCond
RewriteLog
RewriteLogLevel
přepínače:
R = Redirect
NF = Not found
L = Last test if match
F = Forbidden
I = Do case-insensitive matching
U = Store original url in server Variable HTTP_X_REWRITE_URL
Nejčastěji jsem používal L (poslední pravidlo) a U, který vrací původní adresu v proměnné HTTP_X_REWRITE_URL - u Apache používám REQUEST_URI, ale IIS nic nevracel.
Na rozdíl od apachovského mod_rewrite používaného na sdílených hostinzích se pravidla nezapisují pro každou doménu zvlášť do souboru .htaccess, ale společně do IsapiRewrite4.ini
Problém jsem měl u syntaxe RewriteCond %{REMOTE_ADDR} kdy server v REMOTE_ADDR nevracel to co bych očekával (adresu dané domény). Stejně tak jsem v proměnné SERVER_NAME nedostal kýžený výsledek, ale zde je možné, že server nebyl zcela správně nastaven.
Rozdíly v syntaxi samotných pravidel nejsou téměř žádné, používá se PERL kompatibilních regulárních výrazů.
Chvíli jsem se zapotil, než jsem přišel na to, že adresy v pravidlech musím používat absolutní k webrootu. Ale i tohle může byt příčina špatně nastaveného serveru.
Př.:
RewriteRule ^/web_adr/en/bulletin/(.*)/([0-9]{1,15})\.html$ /web_adr/index.php?lang=en&p=bulletin&idp=$2 [L]
Pokud nahrajete do IsapiRewrite4.ini nové pravidla, není potřeba restartovat server, pravidla se načtou automaticky, pokud je v pravidlech chyba, zapíše se do logu a automaticky se nahrají původní funkční pravidla. Také si můžete zvolit úroveň reportování. Přijatelný kompromis je 3, 5 zapisuje do logu úplně vše.
Robert Hlobílek 20.09.2006 19:42:30 přečteno: 7565x komentářů: 0
<< zpět