【发布时间】:2014-01-05 04:14:23
【问题描述】:
有没有办法让 Django 将一些 url 传递给任何 apache 也可以解决它们的方法?
例如,如果我输入:http://
同样,如果我输入 http://
基本上,我希望一些网址“不被触摸”。
谢谢!
编辑 根据 Anentropic 的评论,我希望 Apache only 调用 Django,如果它不能匹配 url。我需要如何更改 httpd.conf 才能做到这一点?假设我希望 Django 只响应 /polls/、/admin/ 和 /accounts/。
这是我的 httpd conf 文件中的相关部分:
<VirtualHost *:80>
#DocumentRoot /home/ec2-user/srv/mysite
DocumentRoot /var/www/html/
ServerName <My IP ADDRESS>
WSGIScriptAlias / /home/ec2-user/srv/mysite/apache/wsgi.py
# Alias /phpmyadmin /var/www/html/phpmyadmin
# <Location /phpmyadmin>
# SetHandler None
# </Location>
<Directory /home/ec2-user/srv/mysite/media>
Order deny,allow
Allow from all
</Directory>
<Directory /home/ec2-user/srv/mysite/apache>
Order deny,allow
Allow from all
</Directory>
LogLevel warn
Alias /media/ /home/ec2-user/srv/mysite/media/
Alias /static/ /home/ec2-user/srv/mysite/static/
<Directory /home/ec2-user/srv/mysite/static>
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
【问题讨论】:
-
你需要反过来做,让 Apache 首先尝试匹配
/var/www/html中的 URL,如果不匹配,则仅将 URL 传递给 django。 -
Burhan 说的:反过来做。通过 Django 提供服务是一个坏主意:Web 服务器是针对这种东西优化的,而不是 django。
-
@BurhanKhalid 是正确的 - 它是首先获取 url 的 Apache,在典型的 wsgi 设置中,它会将所有 url 传递给 Django ...您希望 Apache 对某些 url 做一些不同的事情,并且将其余部分传递给您的 Django 应用程序
-
@Yuji'Tomita'Tomita 的评论令人困惑,因为显然您将“通过 Django 提供服务” - Django 是您的 Web 应用程序,使用 Django 的唯一方法是让它提供服务。他的意思是“不要用 Django 提供静态文件”docs.djangoproject.com/en/dev/howto/static-files/deployment/…
-
@Anentropic:点了,但我如何让它首先尝试匹配 /var/www/html 中的 url,然后匹配 Django?如果有帮助,我把我的 httpd.conf 文件放上去?