该问题的解决方法是在Apache的配置文件中设置SCRIPT_NAME。如下所示:
在Apache的httpd.conf或者其他配置文件中添加以下行:
ScriptAlias /myapp /path/to/myapp
WSGIDaemonProcess myapp display-name=%{GROUP} python-path=/path/to/myapp:/path/to/virtualenv/lib/python3.8/site-packages
WSGIProcessGroup myapp
SetEnv SCRIPT_NAME /myapp
在这种情况下,将在灵活性和性能之间进行一些取舍。如果你想最大限度的改善性能,则可以将SCRIPT_NAME/route給封装在WSGIScriptAlias中并将应用程序封装在WSGIDaemonProcess和WSGIProcessGroup中。你还应该知道,如果你使用这个功能来避免在URL前面添加伪前缀,则必须确保Apache的DocumentRoot不包含您的Django代码。
如果你已经在Django的URLconf中用了针对根URL目录的显式视图函数或者模板,则在处理这些请求时必须使用SCRIPT_NAME。
还要在你的settings.py文件中设置STATIC_URL的值,否则所有的静态资源,如CSS和JavaScript文件,都将被请求到根目录下而不是”/myapp”目录下(或者你所设置的SCRIPT_NAME的命名的任何目录下)。
例如:
STATIC_URL = '/myapp/static/'
这个解决方法可以保证get_script_prefix能够正确的返回前缀。
上一篇:apache下载服务器
下一篇:apache卸载centos方法