共用レンタルサーバーの「ExpressWeb」。
特に重くなることもなく料金もそこそこなので不満もなく使用しているが、他の通常のレンサバと異なり、Windows Serverベースということで、慣れないことをしなければならない。

今回、このサーバー上のあるサイトを引越しすることになり、初めていろいろと触ってみて、そこそこハマったのでメモ。

FTPソフトからファイルやフォルダのアクセス権限を変えることができない

これも、Windowsサーバーであるゆえのことらしい。
FTPソフトからではなく、管理画面のファイルマネージャーからパミッションを変えることで解決。

htaccessが使えない代わりにIISのURL Rewriteモジュールを使用

いつもガシガシとhtaccessを使いまくっている自分にとっては面倒な仕様。

とりあえず、よく使うものを覚えていくしかない。

まずはwordpressを入れているサイトでよく使う、ファイル名の書き換え関連の記述。

<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>

これを書けば、何の問題もなく動いた。

 
もう1つ、苦労した上でなんとか動かせたのが、階層構造はそのままに他のドメインへリダイレクトさせる記述。

まず、以下を試してみた。

<system.webServer>
   <httpRedirect enabled="true" destination="http://×××××.com/" />
</system.webServer>

すると、リダイレクトはされるものの、どのページにアクセスがあってもドメイン直下にリダイレクトされてしまう。
そこで、下のようにchildOnly属性をtrueにしてみたところ

<system.webServer>
   <httpRedirect enabled="true" childOnly="true" destination="http://×××××.com/" />
</system.webServer>

確かに、フォルダ構成はそのままにリダイレクトされるようになった。
しかし、wwwありのドメインからのリダイレクトがなぜかうまくいかない。(わたしの理解が浅いということでしょうが…)

そこで、以下のように httpRedirect ではなくて rewrite を使ってみる。

<system.webServer><rewrite>
<rules>
<rule name="Redirect" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="○○○○○.com$" />
</conditions>
<action type="Redirect" url="http://×××××.com/{R:0}"
redirectType="Permanent" />
</rule>
</rules>
</rewrite></system.webServer>

最初、リダイレクト元のドメインを指定する箇所で

<add input="{HTTP_HOST}" pattern="^○○○○○.com$" />

のように、頭に”^”をつけていたが、それだとwwwつきがリダイレクトされなかった。
そこで上のように”^”をとることで無事思い通りの動きを実現することができた。

なんとか一件落着。