現在、django-cms 2.4.2 を使用しています。DEBUG=True のローカル マシンで、127.0.0.1/ にアクセスすると 127.0.0.1/en/ にリダイレクトされるという、特有の問題が発生しました。実稼働サーバー (virtualenvs、apache) で実行している場合、mysite.com/ にアクセスすると 404 が発生しますが、mysite.com/en/ がホームページを表示している間、ホームページは後ろに表示されます。問題の根本を見つけようとしていますが、それが URL、wsgi、または設定にあるかどうかを判断できないようです。
urls.py
from django.conf.urls import patterns, include, url
from django.conf.urls.i18n import i18n_patterns
from django.contrib import admin
from django.conf import settings
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin_tools/', include('admin_tools.urls')),
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
url(r'^admin/', include(admin.site.urls)),
)
urlpatterns += i18n_patterns('',
url(r'^accounts/', include('allauth.urls')),
... apps ...
url(r'^', include('cms.urls')),
)
# Static files
urlpatterns += staticfiles_urlpatterns()
if settings.DEBUG:
urlpatterns = patterns('',
(r'^' + settings.MEDIA_URL.lstrip('/'), include('appmedia.urls')),
) + urlpatterns
else:
from django.conf.urls.defaults import *
handler500 = 'error_pages.views.server_error'
handler404 = 'error_pages.views.custom_404'
handler403 = 'error_pages.views.permission_denied'
handler400 = 'error_pages.views.bad_request'
私は持っていて、設定django.middleware.locale.LocaleMiddleware
にcms.middleware.language.LanguageCookieMiddleware
追加しました。
私の Apache httpd.conf では:
NameVirtualHost *:27567
# Begin site configuration
<VirtualHost *:27567>
WSGIScriptAlias / /path/to/wsgi.$
ErrorLog "/path/to/log/error_path.log"
</VirtualHost>
django で発生する可能性のあるエラーをログに記録してみました。
WARNING 2013-09-18 14:04:34,380 Not Found: /
編集:
Debug=True の場合、問題は解決したようです。allowed_hosts 設定を'localhost'
およびに設定しました'domain.com'
。ロードされたミドルウェアのシーケンスを確認しましたが、i18n は true に設定されていますが、まだ問題の場所を特定できません。
編集2:
問題が見つかりました。エラーページのビューが次のエラーページにあります。
from django.shortcuts import render
def server_error(request):
return render(request, '500.html')
おそらく、django-cms の URL 間の衝突です。