Ik heb een website gebouwd m.b.v. het Django-framework, en deze gisteren geïnstalleerd op de webhosting. Dit is een goedkope virtuele host, en ik mag alleen maar wat met .htaccess de configuratie aanpassen. Ook de media bestanden moeten op dezelfde host staan.
Ik heb daarom het Django project in httpdocs/python-app/ geplaatst, en alle media bestanden onder httpdocs/media/. Vervolgens wou ik de boel met mod_rewrite zo configureren dat iedere request behalve de media requests onzichtbaar voor de gebruiker aan Django doorgegeven wordt, wat ik doe d.m.v. een mod_rewrite die python-app/ voor de url zet.
Ik heb het nu zo geconfigureerd:
Dit werkt prima, de URL's zonder django-app/ prefix worden correct afgehandeld. Echter genereer ik de URL's automatisch m.b.v. de reverse functie of url in de templates, en voor deze URL's wordt nu wel de prefix python-app/ geplaatst. Dit is op zich correct, omdat ik dat zelf als django.root meegegeven heb. Als ik echter de django.root optie niet geef, begrijpt de URL resolver het niet meer omdat deze de URL inclusief de django/app prefix doorkrijgt, waar het niet mee overweg kan wat resulteert in een 404.
Weet iemand hoe mod_rewrite en/of Django zo te configureren dat Django deze python-app/ prefix niet meer krijgt of negeert?
Ik heb daarom het Django project in httpdocs/python-app/ geplaatst, en alle media bestanden onder httpdocs/media/. Vervolgens wou ik de boel met mod_rewrite zo configureren dat iedere request behalve de media requests onzichtbaar voor de gebruiker aan Django doorgegeven wordt, wat ik doe d.m.v. een mod_rewrite die python-app/ voor de url zet.
Ik heb het nu zo geconfigureerd:
code: /httpdocs/.htaccess
1
2
3
4
| RewriteEngine On RewriteCond %{REQUEST_URI} !^/media/ RewriteCond %{REQUEST_URI} !^/python-app/ RewriteRule ^(.*)$ python-app/$1 [PT] |
code: /httpdocs/python-app/.htaccess
1
2
3
4
5
| SetHandler python-program PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE project.settings PythonOption django.root /python-app PythonDebug On |
Dit werkt prima, de URL's zonder django-app/ prefix worden correct afgehandeld. Echter genereer ik de URL's automatisch m.b.v. de reverse functie of url in de templates, en voor deze URL's wordt nu wel de prefix python-app/ geplaatst. Dit is op zich correct, omdat ik dat zelf als django.root meegegeven heb. Als ik echter de django.root optie niet geef, begrijpt de URL resolver het niet meer omdat deze de URL inclusief de django/app prefix doorkrijgt, waar het niet mee overweg kan wat resulteert in een 404.
Weet iemand hoe mod_rewrite en/of Django zo te configureren dat Django deze python-app/ prefix niet meer krijgt of negeert?