2010-12-15 12 views
3

私はベースURLを持っています。 http://baseurl.com/ 私はそれの後ろにプロジェクトを実行しようとしています。たとえば、 http://baseurl.com/mongoose/ プロジェクトは実行されますが、URLはすべて ベースURLを参照しているため正しく動作しません。だから 'About Me'のページでは、 http://baseurl.com/mongoose/aboutの代わりにhttp://baseurl.com/aboutを指していますApache | Django:ベースURLの後ろにあるWebサイトを実行するには?

これは私がdjangoまたはapacheで変更する必要がありますか?私は でも可能ですか?

IISで提供されている背景私はIISで、あなたが「Apache and Django」で達成しようとしていることを本質的に実行するサイト内で「作成してアプリケーション」を利用できることを知っています。

おかげ

答えて

1

何もする必要はありません。 Apacheは、あなたのベースURLであるSCRIPT_NAMEというリクエストヘッダーを設定していて、すべてのURLの逆転にそれを考慮しています。

テンプレートにこれらのURLをどのように作成していますか?

更新

だからあなたの問題はにflatpagesのURLを取得しています。問題は、reverse()関数または{% url %}タグを使用してSCRIPT_NAMEを考慮してURLを動的に計算する通常の方法は、フラットページではurls.py経由ではなくカスタム経由でフラッディングされないため動作しません404で発生するミドルウェア。

そのミドルウェアを使用する代わりに、私はフラットページにディスパッチするためにurls.pyメカニズムを使用します。あなたのsettings.pyからflatpagemiddlewareを外し、urls.py であなたのパターンの最後でこれを追加します。

url(r'^(?P<url>.*)$', 'django.contrib.flatpages.views.flatpage', name='flatpage'), 

、あなたのテンプレートで、あなたが行うことができます:

<a href="{% url flatpage page.url %}"> 

と正しく動作するはずです。

+0

答えを追加することによって応答します。コードはあなたの答えに返信されて幸せではなかった。 – darren

0

彼らはトップレベルであることを期待かどうかを確認するためにプロジェクト(S)のいずれかのurls.pyを確認してください。しかし、アプリケーションが/somethingのようなリンクを出力する場合、ルートディレクトリを意味します。アプリケーションはビュー/パラメータをURLに戻す必要があり、URLを移動することができます。あなたがアプリを書いたなら、django.core.urlresolversreverseをチェックしてください。

+0

私は 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware'、 を使用していますので、私は私のurls.pyのフラットページのURLをキャッチしていません – darren

関連する問題