2010-04-18 6 views
6

J'ai eu des difficultés à obtenir autre chose qu'un simple index/pour retourner correctement en utilisant bottle.py dans un environnement CGI. Quand j'essaie de revenir/bonjour j'obtiens une réponse 404. Cependant, si je demande /index.py/helloProblèmes avec les URL de routage utilisant CGI et Bottle.py

import bottle 
from bottle import route 

@route('/') 
def index(): 
    return 'Index' 

@route('/hello') 
def hello(): 
    return 'Hello' 

if __name__ == '__main__': 
    from wsgiref.handlers import CGIHandler 
    CGIHandler().run(bottle.default_app()) 

Et voici mon fichier .htaccess

DirectoryIndex index.py 
<ifmodule mod_rewrite.c=""> 
RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /index.py/$1 [L] 
</ifmodule> 

Je copiais une grande partie du code à partir d'ici que j'utilise DH et il nous a semblé pertinent : http://blog.coderonfire.com/2010/02/running-bottle-python-micro-framework.html

Merci de votre aide.

Répondre

4

Le problème est que le bloc <ifmodule> ne concerne pas votre serveur Apache et que les directives de mod_rewrite ne fonctionnent pas. Commencez par le .htaccess suivant et si vous en avez besoin, ajoutez le bloc en fonction de votre version actuelle d'Apache.

DirectoryIndex index.py 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /index.py/$1 [L] 
+1

Merci, cela fonctionne. J'ai dû enlever le précédent/sur /index.py/$1 mais cela fonctionne parfaitement. – Risingson

+0

@enrico, je ne suis pas sûr que j'aime votre modification. Je ferais mieux de supprimer la barre oblique au lieu de supprimer le RewriteBase. – newtover

+0

Réglage RewriteBase semble excessif quand il s'agit juste d'une barre oblique, mais certainement rend les choses plus faciles si cela change jamais. Cependant, la vraie raison pour laquelle je n'ai pas simplement supprimé la barre oblique est qu'une modification doit être d'au moins 6 caractères, à cause du filtre stupide "edit important". Vous pouvez le remettre et supprimer le slash si c'est votre préférence. – Enrico