.htaccess の Redirect と Content Negotiation の相性

2007-7-21 11:17
このエントリーをはてなブックマークに追加

以前のサイトから、このブログに移行しましたが、MT から WordPress に移行したため、いくつかの URL(URL) が変わってしまいました。個別記事 (Permalink) については同じにしましたが、アーカイブページ・カテゴリーのページなどの URI 異なってしまっています。そこで .htaccess ファイルに Redirect ディレクティブを記述しようと思ったのにうまくいきません。

原因はどうも Apache のコンテント・ネゴシエーション (Content Negotiation) とぶつかっているようです。リダイレクトされないだけならまだしも、404 Not Found になってしまうので困ります。httpd.conf の Options から MultiViews を外したらうまく Redirect されるようになりました。

以前は同じ設定をしていてもうまくリダイレクトされた記憶があるので、Apache の特定のバージョンによるものなのかわかりませんが、Apache 2.0.46 で試しても同様でした。ファイルが存在しているといけないようで、ファイルを削除してしまえばよいようです。たとえば .htaccess で

Redirect permanent /hoge http://example.com/newhoge/

の様に指定した場合、 /hoge.html などのファイルが残っていると、404 Not Found になります。/hoge.html を削除またはリネームすれば良さそうです。ハマりました。

  • ブックマーク : アクセス: 6,398回
  • カテゴリー : Apache
  • キーワード :

コメントはまだありません

No comments yet.

Sorry, the comment form is closed at this time.

68 queries. HTML convert time: 1.125 sec. Powered by WordPress. Valid XHTML
Copyright © 2003-2017 @ futuremix.org ログイン