Pokud provozujete redakční systém WordPress na platformě Windows Server 2003, možná jste narazili na potíže s přepisem URL trvalých odkazů. Narozdíl od Apache totiž Microsoft IIS 6.0 nepodporuje přepis URL (ekvivalent mod_rewrite). Je třeba použít filtr, který se o vše postará.
Původní odkazy vypadají přibližně takto:
http://www.jiribrejcha.net/index.php/2009/07/instalujte-ale-potichu/
Za použití přepisu URL se zbavíte části “index.php” v adrese a můžete odkaz přeformátovat do jakékoliv jiné podoby pomocí pravidel:
http://www.jiribrejcha.net/2009/07/instalujte-ale-potichu/
Zmínil jsem, že IIS 6.0 bohužel nic takového v základu neumí. Pro tyto účely je nutné použít některý z pluginů přepisujících adresu. I přes pár hodin strávených s jeho nastavením a testováním jsem si vybral plugin Ionic’s ISAPI Rewrite Filter, který je mimochodem doporučován i vývojáři IIS. Abyste s instalací nemuseli zápasit stejně jako já, tady je návod, jak vše nastavit.
Postup nastavení přepisu URL
- Předpokládejme, že máte založen webový server v IIS a v něm běží WordPress. S tím samozřejmě souvisí správně nainstalované PHP a SQL server, ale o tom snad někdy příště.
- Stáhněte si freeware filtr Ionic’s ISAPI Rewrite Filter. Obsah archivu rozbalte například do složky “C:\windows\system32\inetsrv\rewriteurl\”.
- Otevřete si Správu IIS (Start, Spustit, inetmgr). Pravým tlačítkem klikněte na webový server, kde běží Wordpress a zvolte Vlastnosti.
- Přejděte na záložku Filtry ISAPI a klikněte na Přidat.
- Přidejte nový filtr viz obrázek. Cesta k souboru je “C:\windows\system32\inetsrv\rewriteurl\lib\IsapiRewrite4.dll”.
- Výsledný stav vypadá takto.
- Nyní restartujte IIS.
- Otevřete konfigurační soubor filtru “C:\windows\system32\inetsrv\rewriteurl\lib\IsapiRewrite4.ini” a jeho původní obsah nahraďte těmito pravidly pro přepis URL. Po uložení nastavení by mělo být vše funkční, stačí jen ve WordPressu změnit formát odkazů.
- Přihlaste se do administrace WordPressu a přejděte do Nastavení a do sekce Trvalé odkazy. Tam přepněte nastavení na Vlastní strukturu a vložte tento formátovací řetězec:
/%year%/%monthnum%/%postname%/
# Rewrite odkazu pro WordPress
RedirectRule ^/index\.php/(.*)$ /$1 [I,R=301]
RewriteRule ^/(?!index\.php|wp-|xmlrpc)(.*)$ /index.php/$1 [I,L]
Dokumentace pluginu hovoří o nutnosti nastavit oprávnění pro otevírání a spouštění na složce “C:\windows\system32\inetsrv\rewriteurl\lib\” pro skupinu IIS_WPG, ale ukázalo se, že to není nutné.
Ověření funkčnosti rewriteru
Pokud potřebujete zjistit, zda samotný rewriter funguje, jak má, postupujte podle tohoto návodu z dokumentace Ionic’s ISAPI Rewrite Filteru. K tomu aby vše fungovalo je potřeba mít povoleno rozšíření webových služeb v IIS podobně jako na obrázku.