さて、今日もマニアック情報をお届けします(笑)
普通のサーバーにWordpressをインストールしてパーマリンク変更すると、そのままでは投稿記事が404になります。
ところが、ExpressWebの場合、上記.htaccessをUPすると
AuthName directive not found.
という謎のエラーが表示されサイトが表示できません。
でも、ExpressWebの場合は.htaccessをUPするとエラーで表示できない・・・
あなたの web.config が書き込み可能ならこの操作は自動的に行われますが、そうでない場合は web.config ファイルに URL リライトルールを書き込む必要があります。このフィールドをクリックし、CTRL + a ですべてのコードを選択して、web.config ファイルの /<configuration>/<system.webServer>/<rewrite>/<rules> 要素に挿入してください。
リライトルールを自動的に生成するために web.config ファイルを一時的に書き込み可能にする場合、ルールの保存後に、忘れずに権限を元に戻してください。
とかいう、わけわからない注意書きが書いてあります。。。
アクセス制限みたいです。
を合体させればOKなんですが、いじくっことないので試行錯誤。。。
・.htaccessはUPしない
・下記記述のweb.configを上書きUP
※<>は本当は<>です。
■普通のサーバー■
普通のサーバーにWordpressをインストールしてパーマリンク変更すると、そのままでは投稿記事が404になります。
それを回避するには、以下の記述の.htaccessをWordpressフォルダあるいは1個上のフォルダにUPします。
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
■以下、ExpressWebサーバーの場合■
ところが、ExpressWebの場合、上記.htaccessをUPすると
WebsitePanel IIS Modules Error
AuthName directive not found.
File: d:\HostingSpaces\Users\ほにゃらら\◯◯.com\wwwroot\.htaccess
という謎のエラーが表示されサイトが表示できません。
パーマリンク変更に伴う投稿ページを表示するためには、通常他のサーバーでは.htaccessが必須。
でも、ExpressWebの場合は.htaccessをUPするとエラーで表示できない・・・
それで、管理画面のパーマリンク設定の画面で1番下に
あなたの web.config が書き込み可能ならこの操作は自動的に行われますが、そうでない場合は web.config ファイルに URL リライトルールを書き込む必要があります。このフィールドをクリックし、CTRL + a ですべてのコードを選択して、web.config ファイルの /<configuration>/<system.webServer>/<rewrite>/<rules> 要素に挿入してください。
<rule name="wordpress" patternSyntax="Wildcard">
<match url="*" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" />
</rule>
リライトルールを自動的に生成するために web.config ファイルを一時的に書き込み可能にする場合、ルールの保存後に、忘れずに権限を元に戻してください。
とかいう、わけわからない注意書きが書いてあります。。。
ググっても日本語で書いてあるサイトがないんですけど・・・
それで、FTPで見てみるとweb.configというファイルがあるのですが、すでに何か記述されている。。。
【元々のweb.configの中身】
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="false" />
<defaultDocument>
<files>
<clear />
<add value="Default.htm" />
<add value="Default.html" />
<add value="index.htm" />
<add value="index.html" />
<add value="index.php" />
<add value="default.aspx" />
<add value="index.aspx" />
<add value="index.pl" />
<add value="index.py" />
</files>
</defaultDocument>
</system.webServer>
</configuration>
アクセス制限みたいです。
パーミッションがxxxとなっているのですが、755に変更してから管理画面のパーマリンクを変更しても書き変わりません。。。
仕方ないので手動で変更する方向で模索・・・
海外のサイトで調べた感じだと、上記記述と
<rule name="wordpress" patternSyntax="Wildcard">
<match url="*" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" />
</rule>
を合体させればOKなんですが、いじくっことないので試行錯誤。。。
結論を書くと
・.htaccessはUPしない
・下記記述のweb.configを上書きUP
※<>は本当は<>です。
【最終的なweb.configの中身】
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="false" />
<defaultDocument>
<files>
<clear />
<add value="Default.htm" />
<add value="Default.html" />
<add value="index.htm" />
<add value="index.html" />
<add value="index.php" />
<add value="default.aspx" />
<add value="index.aspx" />
<add value="index.pl" />
<add value="index.py" />
</files>
</defaultDocument>
</system.webServer>
</configuration>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="wordpress" patternSyntax="Wildcard">
<match url="*" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
これでExpressWebのWordpressでパーマリンク変更しても投稿ページが正常に表示されるようになりました。。。
繰り返しますけど .htaccess はUPしません。
web.configはちゃんとバックアップをとってからやってくださいね!って当たり前か。