3

URLの2つの異なるサブディレクトリにマウントする必要があるDjangoプロジェクトがあり、Wordpressを/で実行する必要があります。それで:

*.example.com - WordPress
*.example.com/studio - django
*.example.com/accounts - django

これが私がこれまでに持っているhttpd.confです:

<VirtualHost *:80>
    ServerName wildcard.localhost
    ServerAlias *.localhost

    AddType application/x-httpd-php .php
    DocumentRoot /var/empty

    Alias /site_media/ /home/zach/projects/python/myproject/static/
    Alias /media/ /home/zach/projects/python/myproject/env/lib/python2.6/site-packages/django/contrib/admin/media/
    Alias / /home/zach/projects/python/myproject/wordpress/

    WSGIScriptAlias /accounts /home/zach/projects/python/myproject/app/privio.wsgi
    WSGIScriptAlias /studio /home/zach/projects/python/myproject/app/privio.wsgi

    <Directory /home/zach/projects/python/myproject/app>
    Order allow,deny
    Allow from all
    </Directory>

    <Directory /home/zach/projects/python/myproject/wordpress>
    Order allow,deny
    Allow from all
    </Directory>

WordPressの構成を追加する前は、Djangoアプリは正常に機能していました。しかし、この新しいセットアップでは、WordPressが/にインストールされているのを見ることができますが、Djangoアプリは提供されていません。私はApacheconfigの初心者のようなものです-何が欠けていますか?

4

2 に答える 2

4

交換:

DocumentRoot /var/empty

と:

DocumentRoot /home/zach/projects/python/myproject/wordpress

削除する:

Alias / /home/zach/projects/python/myproject/wordpress/

交換:

WSGIScriptAlias /accounts /home/zach/projects/python/myproject/app/privio.wsgi
WSGIScriptAlias /studio /home/zach/projects/python/myproject/app/privio.wsgi

と:

WSGIScriptAliasMatch ^(/(accounts|studio)) /home/zach/projects/python/myproject/app/privio.wsgi$1

つまり、DocumentRootを使用して、Aliasディレクティブではなく、サイトのルートにある必要があるワードプレスを参照します。

WSGIScriptAliasMatchは、指定されたサブURLのみが実際に渡されたとしても、Django自体がルートサイトにマウントされていると見なすためです。これにより、urls.pyの処理が簡素化されます。

WSGIスクリプトパスの最後にある$1は重要なので、そのままにしないでください。

于 2010-08-21T11:06:29.453 に答える
1

ページンググラハムダンプルトン:)

私はその線が

Alias / /home/zach/projects/python/myproject/wordpress/

その下のすべてをオーバーライドします。したがって、へのリクエスト/accountsは、Djangoアプリケーションではなくwordpressアプリケーションによって処理されます。

ドキュメントから:

サイトのルートでのマウント

代わりに、サイトのルートにWSGIアプリケーションをマウントする場合は、WSGIScriptAliasディレクティブを構成するときに、マウントポイントとして「/」をリストするだけです。

WSGIScriptAlias / /usr/local/www/wsgi-scripts/myapp.wsgi

ただし、そうすることは、DocumentRootに含まれる静的ファイルが非表示になり、静的ファイルに関連するURLに対する要求が代わりにWSGIアプリケーションによって処理されることを意味することに注意してください。

于 2010-08-20T20:59:21.950 に答える