読者です 読者をやめる 読者になる 読者になる

システム開発・構築の神様

新しいサービスや技術を使った開発や構築。その他不具合解決など

Windows IIS PHP7の環境にWordpressを構築!日本語パーマリンクに対応

WindowsサーバーのIISでは、Apachの「.htaccess」が利用できません。

.htaccessが設定できないということは、Wordpressのパーマリンクが柔軟に設定できないため、GET方式(p=1などのパラメーター)をメインで利用することになります。

今の検索エンジン上では、SEO的に問題はないみたいですが、静的ページまでもp=xxxだと、見た目が悪いですよね。

そこで、「web.config」を設定することで、Wordpressのパーマリンクを柔軟に設定する方法を試しました。

IISでWordpressのパーマリンクを設定する

IIS Rewrite 2.0のインストール

まずは、IIS Rewrite 2.0をインストールします!が、IISのバージョンによっては、インストールエラーになります。

Windows 10のIISでは、バージョンが新しすぎてインストールできません。

レジストリのバージョン番号を下げて、一時的に古いIISと認識させる必要があります。

regedit(レジストリ編集)

・HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp を探す
・MajorVersionの項目を、10から9(10進数)へ変更
・IIS Rewrite 2.0のインストール
・MajorVersionの項目を、9から10(10進数)へ戻す

以上で、IIS Rewrite 2.0がインストールできました。

その後、サイトのルートパスに「web.config」を設置します。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
      <rewrite>
        <rules>
          <rule name="Main Rule" stopProcessing="true">
            <match url=".*" />
            <conditions logicalGrouping="MatchAll">
              <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
              <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            </conditions>
            <action type="Rewrite" url="index.php/{R:0}" />
          </rule>
        </rules>
      </rewrite>
    </system.webServer>
</configuration>

これで、パーマリンクにカテゴリー名、投稿記事名など設定できるようになりました。

正し、このままでは、日本語のURIで404エラーになってしまいます。

文字コードの関係でしょうか?

fnya.cocolog-nifty.com

こちらの記事を参考にさせていただきました。

レジストリを設定するだけ、問題解決しそうです。

reg add HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\w3svc\Parameters /v FastCGIUtf8ServerVariables /t REG_MULTI_SZ /d REQUEST_URI\0PATH_INFO

無事に日本語もパーマリンクに設定することができました。

これで、Windows IIS上のWordpressが、Linux Apache、Nginx上のWordpressと同じ動作をするようになりました。

忙しい後輩の頼みで、今回IIS版Wordpressを触ってみましたが、分からないことだらけでとても勉強になりました。

エンジニアは、実務から離れてはいけないと痛感しました。。。