2009-04-12 1 views
1
私は

www.site.comにsite.comからジャンゴでのドメインのリダイレクトを行うことができません

500 - Internal Server Error 

私はを参照したときに、私は私の404エラーメッセージが表示されますがsite.comするために参照するとき、私は、次のメッセージが表示されます

私のサイトが生きていることを示すwww.site.com。

sitemodeからwww.site.comへのDjangoの.htaccessなしでどのようにドメインリダイレクトを行うことができますか?

私urls.py

 from django.conf.urls.defaults import * 

    from django.contrib import admin 
    admin.autodiscover() 

    urlpatterns = patterns('', 
    # Example: 
    # (r'^{{ project_name }}/', include('{{ project_name }}.foo.urls')), 

    (r'^home/', include('index.html')), 

    # Uncomment the admin/doc line below and add 'django.contrib.admindocs' 
    # to INSTALLED_APPS to enable admin documentation: 
    (r'^admin/doc/', include('django.contrib.admindocs.urls')), 

    (r'^admin/(.*)', admin.site.root), 
    ) 

[編集]

私はDjangohostingから次の応答があります。

Remove the website proxy for [site.com] and add [site.com] in the aliases section of the [www.site.com] website. 

を、私はそれが何を意味するのか完全にわかりません。

  1. site.comのウェブサイトプロキシを削除するにはどうすればよいですか?
  2. ウェブサイトwww.site.comのエイリアスセクションはどこにありますか?
+0

.htaccess(または使用しているWebサーバーによって提供されているその他のメカニズム)を使用できないのはなぜですか? – mipadi

+0

@mipadi:私はすることができますが、私はしたくありません。 .htaccessなしで自分のサイトを設定する方法を学びたい。ある人は、.htaccessは構成がいっぱいで、Apacheのセキュリティが悪いという兆候です。 –

+0

一般的に言えば、Djangoは少なくともこのような状況ではサーバー構成を処理しません。 Djangoアプリはサーバーから提供されます。したがって、site.comからwww.site.comに自動的にリダイレクトしたい場合は、Apacheの設定ファイルを使用するのが一番良い方法です。 – mipadi

答えて

6

私はそれがすべてのあなたの問題を解決するかどうか知っていますが、ジャンゴを経由して、それを実行したい場合、それは他のミドルウェアの前に実行されなければならないことを覚えておいてください

from django.http import HttpResponseRedirect 

class WWWRedirectMiddleware(object): 
    def process_request(self, request): 
     if not request.META['HTTP_HOST'].startswith('www.'): 
      return HttpResponseRedirect('http://www.mysite.com') 

ミドルウェアをしようとしないでください。

this oneに基づいて、テストしませんでした。

2

500内部サーバーエラーはおそらく、この行によって引き起こされる:

(r'^home/', include('index.html')), 

include()機能は、他のURLの設定ファイルではなく、静的なHTMLファイルをインクルードする方法です。指定されたURL(/ home)にindex.htmlstatic fileとして提供するか、単にファイルをレンダリングするビューを作成する必要があります。

+0

私はラインをコメントしました。同じエラーが発生します。 @mipadi:それを指摘していただきありがとうございます! –

3

チェックアウトPREPEND_WWW設定が役立ちます。

+0

問題は、prepend_www設定が機能するサイトを見つけることができないことです。 :-) –

1

私は

500 site.comするために参照するとき、次のメッセージが表示されます - 内部サーバーエラー

を、私は、私のサイトを示しているwww.site.comを参照するとき、私は私の404エラーメッセージが表示されます生きている。

これは逆です。 500のメッセージは、サイトがアクティブであることを示していますが、エラーが発生しています。あなたが理解しなければならないのは、URLのsite.com/www.site.com部分がサーバに接続するを見つけることです。あなたのdjangoアプリケーションが呼び出されるまでに、この部分は既に完成しているので、djangoからこれを行う方法はありません。

代わりに、wwwをsite.comのサブドメインとして設定し、同じ場所を指し示したいとします。ここでの最初の例を参照してください:virtualhosts examples

UPDATE私はちょうどあなたがあなたの 404はアップ見せていたと述べていることに気づいたので、最初の2つの文を無視します。いずれにしても、解決策は同じであろう。:-)

関連する問題