次のようなURL(実際のファイルではなくビューを指す)を除いて、すべてのURLはApacheとdjangorunserverの両方で正常に機能します。
foo.js
urls.py:
url(r'^foo.js$', 'myapp.views.foo', name="foo"),
views.py:
def foo(request):
return HttpResponse("foo")
開発サーバーでこのURLを呼び出すと、私が出力されますfoo
mod_wsgiを使用したApacheで、同じURLを使用して404
wsgi confファイル(本当に基本的):
import os
import sys, logging
sys.stdout = sys.stderr
path = '/var/www/vhosts'
if path not in sys.path:
sys.path.insert(0, path)
sys.path.insert(0, path + '/myapp')
os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
従来のURL/foo/
は期待どおりに機能します。
問題はどこだ?それは私が知らない/認識しないapacheの振る舞いですか?Djangoルーティングですか?
編集:
apache confを追加した後(おそらく明白なヒントに感謝します)、*。js上のそれらのAliasMatchが問題だと思います..私はそれらを完全に忘れました!
<VirtualHost *:80>
DocumentRoot "/var/www/vhosts/myapp"
ServerName www.myapp.local
Alias /robots.txt /var/www/vhosts/myapp/public/static/robots.txt
Alias /favicon.ico /var/www/vhosts/myapp/public/static/favicon.ico
AliasMatch ^/([^/]*\.css) /var/www/vhosts/myapp/public/static/$1
AliasMatch ^/([^/]*\.js) /var/www/vhosts/myapp/public/static/$1
Alias /media/ /var/www/vhosts/myapp/public/media/
Alias /static/ /var/www/vhosts/myapp/public/static/
<Directory /var/www/vhosts/myapp>
Order allow,deny
Allow from all
</Directory>
WSGIDaemonProcess myapp.djangoserver processes=2 threads=15 display-name=%{GROUP}
WSGIProcessGroup myapp.djangoserver
WSGIScriptAlias / /var/www/vhosts/myapp/apache/django.wsgi
LogLevel info
</VirtualHost>