かなりBasicな話なのですけど、設定ミスでアクセス出来ない事例が生じてたのでメモとして。


Apacheの設定で「wwwあり」と「wwwなし」を統一するには、VirtualHostを使うと楽です。


「wwwあり」→「wwwなし」

<VirtualHost *:80>
  ServerName www.example.com
  Redirect permanent / http://example.com/
</VirtualHost>

「wwwなし」→「wwwあり」

<VirtualHost *:80>
  ServerName example.com
  Redirect permanent / http://www.example.com/
</VirtualHost>


このサイトでは「wwwなし」に統一しているので上のパターンですね。
以下のような転送が行われています。




転送時のステータスは「301 Moved Permanently」です。



注意

この用途に使う場合、転送先のURLの最後には「/」が必要です。
誤って以下のように設定していたため、間違って転送されていました。

誤った設定

<VirtualHost *:80>
  ServerName www.nplll.com
  Redirect permanent / http://nplll.com
</VirtualHost>

誤った設定による転送結果

  • http://www.nplll.com/archives/category/mutter/ → http://nplll.comarchives/category/mutter/


もちろん、404 Not Found。あれま。


正しい設定

<VirtualHost *:80>
  ServerName www.nplll.com
  Redirect permanent / http://nplll.com/
</VirtualHost>