(ページの作成:「== 目的 == * www.example.com というホスト名でアクセスして欲しい。 ==== case1 ==== * IPアドレスでアクセスされた場合は望ましくない...」)
 
13行目: 13行目:
 
* コード: [https://gist.github.com/shinsaka/5fa7830108d9ebbd4f80774c237f6fc4 gist:redirect_correct_hostname_middleware.py]
 
* コード: [https://gist.github.com/shinsaka/5fa7830108d9ebbd4f80774c237f6fc4 gist:redirect_correct_hostname_middleware.py]
  
* <appname>/settings.py に上記middlewareを記述 (下記はlib/middleware.py とした場合の例)
+
* <projectame>/settings.py に上記middlewareを記述 (下記はlib/middleware.py とした場合の例)
  
 
  MIDDLEWARE_CLASSES = [
 
  MIDDLEWARE_CLASSES = [
19行目: 19行目:
 
  ...
 
  ...
  
* <appname>/settings.py に期待するホスト名を設定
+
* <projectame>/settings.py に期待するホスト名を設定
 
* (www.example.com以外のホスト名でアクセスされた場合はリダイレクト)
 
* (www.example.com以外のホスト名でアクセスされた場合はリダイレクト)
 
  CORRECT_HOST = 'www.example.com'
 
  CORRECT_HOST = 'www.example.com'

2016年6月5日 (日) 15:51時点における版

目的

  • www.example.com というホスト名でアクセスして欲しい。

case1

  • IPアドレスでアクセスされた場合は望ましくないので、www.example.comにリダイレクトしたい。

case2 (Heroku)

  • Herokuでは、任意のカスタムドメインを指定することができます。
  • ただし、カスタムドメインを適用してもオリジナルのHerokuDomainも有効のままになってしまいます。
  • つまり、「example.herokuapp.com」のようなホスト名は常に有効なままになるのですが、このホスト名のアクセスは望ましくありません。
  • Herokuのドキュメントでは、アプリケーションでリダイレクトしてね、と記述があります。

対応方法

  • <projectame>/settings.py に上記middlewareを記述 (下記はlib/middleware.py とした場合の例)
MIDDLEWARE_CLASSES = [
    'lib.middleware.RedirectCorrectHostname',
...
  • <projectame>/settings.py に期待するホスト名を設定
  • (www.example.com以外のホスト名でアクセスされた場合はリダイレクト)
CORRECT_HOST = 'www.example.com'

確認

  • curlで確認
$ curl --head http://10.0.0.1/test
HTTP/1.1 301 Moved Permanently
Location: http://www.example.com/test
...

facebook slideshare rubygems github qiita