Como permitir que o mod_wsgi manipule apenas determinadas URLs no Apache?

1

Eu tenho um aplicativo do Django que lida com "/ admin /" e "/ myapp /". Todas as outras solicitações devem ser tratadas pelo Apache.

Eu tentei usar o LocationMatch, mas eu teria que escrever um regex negativo. Eu tentei WSGIScriptAlias com o prefixo / admin /, mas o wsgi_handler recebe a requisição com o corte / admin / part.

Existe uma maneira mais limpa de fazer o mod_wsgi apenas lidar com certas solicitações?

    
por Frederik 03.06.2010 / 16:29

2 respostas

3

Uso:

WSGIScriptAliasMatch ^/(admin|myapp) /some/path/django.wsgi/$1

Isso deve preservar o SCRIPT_NAME como a raiz do site correspondente, de forma que o URL ainda funcione para as entradas que começam com admin e myapp.

    
por 04.06.2010 / 00:56
0

Usar apenas um alias na configuração do meu apache sempre funcionou para mim:

  Alias /media /sites/mysite.org/www/media
  <Location /media>
    Order allow,deny
    Allow from all
  </Location>

Ele é processado antes de o mod_wsgi se aproximar dele.

Do livro de django link :

Se você implantar o Django em um subdiretório - ou seja, em algum lugar mais profundo que o “/” - o Django não cortará o prefixo de URL dos seus padrões de URL. Então, se sua configuração do Apache se parece com:

<Location "/mysite/">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonDebug On
</Location>

Todos os seus padrões de URL precisarão começar com "/ mysite /". Por esse motivo, geralmente recomendamos a implantação do Django na raiz do seu domínio ou host virtual.

    
por 03.06.2010 / 17:12