* URLを変更せずにファイル単位でリダイレクトする

サークルの後輩にファイルを共有する際、自分のサイトにファイルを置いてURLを教えていたのですが、

ファイルの置き場所を変えたくなっちゃったので.htaccessを利用してやってみた。

/hoge/をファイル公開ディレクトリとする。(http://sota1235.net/files/*.zip/hoge/*.zipにアクセスできる。)

  • 元のファイルの置き場所: /hoge/*.zip
  • 新しい置き場所: /hoge/fuga/*.zip

.htaccessファイルの置き場所はファイル公開ディレクトリでよい。

なにはともあれ書いてみる

最初、以下のように記述してみた。

              Redirect /hoge/ http://example.ne.jp/files/fuga/
              

こうすることで/hoge/ディレクトリへのアクセスをhttp://example.ne.jp/files/fuga/にリダイレクトするという意味になる

そして試しにアクセスすると無限ループした(´・ω・`)

こんな感じになってるらしい (参考: ミケネコ研究所)

ブラウザの要求: http://example.ne.jp/hoge/

サーバの返答 : http://example.ne.jp/files/fuga/ リダイレクトせよ

ブラウザの要求: http://example.ne.jp/files/fuga/

サーバの返答 : http://example.ne.jp/files/fuga/fuga/ リダイレクトせよ

ブラウザの要求: http://example.ne.jp/files/fuga/fuga/

サーバの返答 : http://example.ne.jp/files/fuga/fuga/fuga リダイレクトせよ

ブラウザの要求: http://example.ne.jp/files/fuga/fuga/fuga

なるほど。

正しく(というより自分の場合の解決策)はこういう風に書けばよい。

              Redirect 301 /hoge/*.zip http://example.ne.jp/fuga/*.zip
              

これで/hoge/*.zipにマッチするファイルへのアクセスをhttp://example.ne.jp/files/fuga/*.zipにリダイレクトするという意味になる。

301はMoved Permanently、ざっくり言うとコンテンツの移動を意味するHTTPステータスコードですね。

これで後輩に修正URLを布教することなくファイル移動を行えましたとさ〜


※この記事は WordPress に投稿した記事を変換したものです。一部不自然な表示があるかも知れません。ご了承ください。また、記事タイトル先頭の * は WordPress から移行した記事である印です。

comments powered by Disqus