2010-10-09 9 views
3

Ce problème a été la mise sur écoute-moi dernière semaine et maintenant je vais sur une date limite. J'ai un site sur un serveur Media Temple DV qui exécute Drupal dans le webroot (servername.org). J'ajoute un site django et je voudrais qu'il se trouve à l'adresse URL servername.org/myproject. J'ai construire le projet (dans un répertoire à l'extérieur Webroot) et il fonctionne très bien quand je le lance avec le serveur dev django mais je ne peux pas apache configuré pour exécuter mon site django. J'ai suivi ce tutoriel http://how.4cpus.com/installing-django-on-mt-media-temple-dv-35-server-with-mod_python/Exécution d'un projet django dans un sous-répertoire d'un site déjà en cours d'exécution Drupal

pour effectuer la configuration initiale et configurer vhost..conf comme expliqué ici. Mais le fichier .htaccess généré par Drupal continue à saisir mon URL et renvoyer une erreur 404.

Le seul travail que j'ai fait jusqu'ici est que si je crée un sous-répertoire dans http: // httpdocs/myproject, puis je passe à url servername.org/myproject cela fonctionne. Mais dès que j'essaie d'aller à un sous-dossier de myproject (par exemple servername/myproject/login) Je reçois l'erreur à nouveau 404.

Toute aide ici? Je sais que ce doit être une configuration facile d'une ou deux lignes, mais je n'arrive pas à comprendre et je manque d'idées.

Voici un extrait du fichier vhost.conf:

<Location "/myproject/"> 
    SetHandler python-program 
    PythonPath "['/var/www/vhosts/servename.org/']+sys.path" 
    PythonHandler django.core.handlers.modpython 
    SetEnv DJANGO_SETTINGS_MODULE myproject.settings 
    PythonInterpreter myproject 
</Location> 

Et voici le fichier de Drupal dans Webroot (notez la règle de rewirte je mets à la fin qui ne semble pas faire quoi que ce soit):

# 
# Apache/PHP/Drupal settings: 
# 

# Protect files and directories from prying eyes. 
<FilesMatch "\.(engine|inc|info|install|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl|svn-base)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template|all-wcprops|entries|format)$"> 
    Order allow,deny 
</FilesMatch> 

# Don't show directory listings for URLs which map to a directory. 
Options -Indexes 

# Follow symbolic links in this directory. 
Options +FollowSymLinks 

# Make Drupal handle any 404 errors. 
ErrorDocument 404 /index.php 

# Force simple error message for requests for non-existent favicon.ico. 
<Files favicon.ico> 
    # There is no end quote below, for compatibility with Apache 1.3. 
    ErrorDocument 404 "The requested file favicon.ico was not found. 
</Files> 

# Set the default handler. 
DirectoryIndex index.php 

# Override PHP settings. More in sites/default/settings.php 
# but the following cannot be changed at runtime. 

# PHP 4, Apache 1. 
<IfModule mod_php4.c> 
    php_value magic_quotes_gpc    0 
    php_value register_globals    0 
    php_value session.auto_start    0 
    php_value mbstring.http_input    pass 
    php_value mbstring.http_output   pass 
    php_value mbstring.encoding_translation 0 
</IfModule> 

# PHP 4, Apache 2. 
<IfModule sapi_apache2.c> 
    php_value magic_quotes_gpc    0 
    php_value register_globals    0 
    php_value session.auto_start    0 
    php_value mbstring.http_input    pass 
    php_value mbstring.http_output   pass 
    php_value mbstring.encoding_translation 0 
</IfModule> 

# PHP 5, Apache 1 and 2. 
<IfModule mod_php5.c> 
    php_value magic_quotes_gpc    0 
    php_value register_globals    0 
    php_value session.auto_start    0 
    php_value mbstring.http_input    pass 
    php_value mbstring.http_output   pass 
    php_value mbstring.encoding_translation 0 
</IfModule> 

# Requires mod_expires to be enabled. 
<IfModule mod_expires.c> 
    # Enable expirations. 
    ExpiresActive On 

    # Cache all files for 2 weeks after access (A). 
    ExpiresDefault A1209600 

    <FilesMatch \.php$> 
    # Do not allow PHP scripts to be cached unless they explicitly send cache 
    # headers themselves. Otherwise all scripts would have to overwrite the 
    # headers set by mod_expires if they want another caching behavior. This may 
    # fail if an error occurs early in the bootstrap process, and it may cause 
    # problems if a non-Drupal PHP file is installed in a subdirectory. 
    ExpiresActive Off 
    </FilesMatch> 
</IfModule> 

# Various rewrite rules. 
<IfModule mod_rewrite.c> 
    RewriteEngine on 

    # If your site can be accessed both with and without the 'www.' prefix, you 
    # can use one of the following settings to redirect users to your preferred 
    # URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option: 
    # 
    # To redirect all users to access the site WITH the 'www.' prefix, 
    # (http://example.com/... will be redirected to http://www.example.com/...) 
    # adapt and uncomment the following: 
    # RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
    # RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301] 
    # 
    # To redirect all users to access the site WITHOUT the 'www.' prefix, 
    # (http://www.example.com/... will be redirected to http://example.com/...) 
    # uncomment and adapt the following: 
    # RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] 
    # RewriteRule ^(.*)$ http://example.com/$1 [L,R=301] 

    # Modify the RewriteBase if you are using Drupal in a subdirectory or in a 
    # VirtualDocumentRoot and the rewrite rules are not working properly. 
    # For example if your site is at http://example.com/drupal uncomment and 
    # modify the following line: 
    # RewriteBase /drupal 
    # 
    # If your site is running in a VirtualDocumentRoot at http://example.com/, 
    # uncomment the following line: 
    # RewriteBase/

    # Added by Wil Black Oct. 7, 2010 
    RewriteCond %{REQUEST_URI} "/myproject/" 
    RewriteRule (.*) $1 [L] 

    # Rewrite URLs of the form 'x' to the form 'index.php?q=x'. 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} !=/favicon.ico 
    RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 
</IfModule> 

# $Id: .htaccess,v 1.90.2.4 2009/12/07 12:00:40 goba Exp $ 


    [1]: http://how.4cpus.com/installing-django-on-mt-media-temple-dv-35-server-with-mod_python/ 

Répondre

4

le problème est sans doute que drupal saisit URL qui sont sous la forme domaine/chemin1/path2 et les convertit au domaine q = chemin1/chemin2, et est donc saisissant probablement tout ce qui tente de? arriver à Django, et le transformer en appel drupal. Donc, je suppose que ce que vous devez faire est d'ajouter une nouvelle condition de réécriture au htaccess de dire à l'aide de Drupal ignorer quoi que ce soit ciblé au sous-répertoire de Django. Je ne l'ai pas fait cela avant, mais je suppose que vous voulez quelque chose comme ceci:

RewriteCond %{REQUEST_URI} !=/Django_subdirectory 

Cela devrait aller de pair avec toutes les autres conditions de ré-écriture dans ce fichier.

+0

Hey Merci Sid_M, cela a fonctionné! –

+0

Génial. Merci de me le faire savoir. –