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エラーになってしまいます。
文字コードの関係でしょうか?
IIS 8.5 + WordPress 環境で URL をカスタマイズする: ある SE のつぶやき
こちらの記事を参考にさせていただきました。
レジストリを設定するだけ、問題解決しそうです。
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を触ってみましたが、分からないことだらけでとても勉強になりました。
エンジニアは、実務から離れてはいけないと痛感しました。。。