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

  1. 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ě.
  2. Stáhněte si freeware filtr Ionic’s ISAPI Rewrite Filter. Obsah archivu rozbalte například do složky “C:\windows\system32\inetsrv\rewriteurl\”.
  3. Otevřete si Správu IIS (Start, Spustit, inetmgr). Pravým tlačítkem klikněte na webový server, kde běží Wordpress a zvolte Vlastnosti.
  4. Přejděte na záložku Filtry ISAPI a klikněte na Přidat.
  5. Přidejte nový filtr viz obrázek. Cesta k souboru je “C:\windows\system32\inetsrv\rewriteurl\lib\IsapiRewrite4.dll”.
    pridat
  6. Výsledný stav vypadá takto.
    isapi
  7. Nyní restartujte IIS.
  8. 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ů.
  9. # Rewrite odkazu pro WordPress
    RedirectRule ^/index\.php/(.*)$ /$1 [I,R=301]
    RewriteRule ^/(?!index\.php|wp-|xmlrpc)(.*)$ /index.php/$1 [I,L]

  10. 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%/

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.

enable-iis-extension

Přečteno 405x, z toho 1x dnes.