回应:Django/WSGI 和 PHP 如何在 Apache 上共享 /?
你好,
您能否从 /sites-available 发布完整的配置文件
我遇到了一个问题,好像重写引擎将所有请求重定向到 django,因此静态文件和 php 文件无法使用,相反,我看到的是 django 404 页面。如果我删除重写规则,那么静态文件和 php 就可以正常工作。
这是我的 apache 配置文件,来自 /sites-available
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/www/django
<Directory />
Options +FollowSymLinks ExecCGI Indexes
AllowOverride None
DirectoryIndex index.php
AddHandler wsgi-script .wsgi
</Directory>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /mysite.wsgi/$1 [QSA,PT,L]
~
和我的.wsgi 文件:
导入站点
site.addsitedir('/home/user/.virtualenvs/url.com/lib/python2.6/site-packages')
导入操作系统、系统
path = '/home/www/django' 如果路径不在 sys.path 中:sys.path.append(path)
os.environ['DJANGO_SETTINGS_MODULE'] = '我的网站.settings'
sys.path.append(path + '/mysite') 导入 django.core.handlers.wsgi
_application = django.core.handlers.wsgi.WSGIHandler()
导入 posixpath def 应用程序(environ,start_response):
# Wrapper to set SCRIPT_NAME to actual mount point.
environ['SCRIPT_NAME'] = posixpath.dirname(environ['SCRIPT_NAME'])
if environ['SCRIPT_NAME'] == '/':
environ['SCRIPT_NAME'] = ''
return _application(environ, start_response)
磁盘上的文档根目录(/home/www/django)包含 php 文件、图像和 mysite.wsgi 文件。感谢您的帮助
答案1
弄清楚了
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/webdev/domains/handtrackers.com/django
<Directory /home/www/django>
#Options +FollowSymLinks +SymLinksIfOwnerMatch ExecCGI Indexes
AllowOverride None
AddHandler cgi-script .cgi
AddHandler application/x-httpd-php .php
AddHandler wsgi-script .wsgi
Order allow,deny
Allow from all
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /mysite.wsgi/$1 [QSA,PT,L]
</Directory>
但指定任何选项(例如注释掉的选项...)将导致:
“选项 FollowSymLinks 或 SymLinksIfOwnerMatch 已关闭,这意味着 RewriteRule 指令被禁止:”