0

我正在尝试在同一域下的子目录中本地设置两个 Django 应用程序,例如:

http://127.0.0.1/en/
http://127.0.0.1/jp/ 

这是一个片段/etc/apache2/apache2.conf

WSGIDaemonProcess khdx_wsgi user=galdosd group=galdosd maximum-requests=10000
WSGIScriptAlias /khdx /home/galdosd/khdxweb/rel/khdx/apache/django.wsgi
<Location /khdx>
    WSGIProcessGroup khdx_wsgi
</Location>

WSGIDaemonProcess sauron_wsgi user=galdosd group=galdosd maximum-requests=10000
WSGIScriptAlias /sauron /home/galdosd/finalsauronweb/django-root/apache/django.wsgi
<Location /sauron>
    WSGIProcessGroup sauron_wsgi
</Location>

我面临的问题是所有 url 都相对于127.0.0.1eg 127.0.0.1/accountsor127.0.0.1/login而不是127.0.0.1/en/accountsor工作127.0.0.1/en/login

最初,当我只有一个在 127.0.0.1 上运行的 Django 应用程序时,所有事情都运行良好,因为我的目标是我WSGIScriptAlias/不是/enor /jp

提前致谢 :)

4

2 回答 2

2

如果您希望应用程序显示为:

http://127.0.0.1/en/
http://127.0.0.1/jp/

那么你应该使用:

WSGIDaemonProcess khdx_wsgi user=galdosd group=galdosd maximum-requests=10000
WSGIScriptAlias /en /home/galdosd/khdxweb/rel/khdx/apache/django.wsgi
<Location /en>
    WSGIProcessGroup khdx_wsgi
</Location>

WSGIDaemonProcess sauron_wsgi user=galdosd group=galdosd maximum-requests=10000
WSGIScriptAlias /jp /home/galdosd/finalsauronweb/django-root/apache/django.wsgi
<Location /jp>
    WSGIProcessGroup sauron_wsgi
</Location>

不知道 /khdx 和 /sauron 的子 URL 挂载点来自哪里,但它不会产生你想要的。

我实际上会将上述内容进一步简化为:

WSGIDaemonProcess khdx_wsgi user=galdosd group=galdosd maximum-requests=10000
WSGIScriptAlias /en /home/galdosd/khdxweb/rel/khdx/apache/django.wsgi process-group=khdx_wsgi application-group=%{GLOBAL}

WSGIDaemonProcess sauron_wsgi user=galdosd group=galdosd maximum-requests=10000
WSGIScriptAlias /jp /home/galdosd/finalsauronweb/django-root/apache/django.wsgi process-group=sauron_wsgi application-group=%{GLOBAL}

只要确保您使用的是 mod_wsgi 3.0 或更高版本,而不是一些古老的 2.X 版本。

还要确保在您的代码中使用正确的模板宏和代码函数在需要在响应中填写它们时正确计算 URL,否则它们可能会丢失安装点。

还要使用适当的方法来填写登录/注销 URL 中的挂载点,以便使用 Django 版本。较旧的 Django 版本将要求您在设置文件中明确将 en 和 jp 作为登录/注销 URL 设置的一部分。这些天来,您可以使用一些神奇的功能,它会自动在它们前面加上挂载点,这样您就不会在设置中的登录/注销 URL 路径中嵌入挂载点的知识。

因此,请使用该配置,然后如果仍有问题,请根据该配置重申您的问题。

于 2013-05-18T11:28:23.367 回答
1

这里不需要单独的应用程序。您可以通过在 Django URLs 中使用语言前缀以您想要的方式实现基于语言的视图。

于 2013-05-18T09:19:12.060 回答