2010-10-08 14 views
0

J'ai écrit une application Sinatra simple avec deux "routes": "/ show" et "/ listshows". Lorsque je lance l'application sur Webrick, tout fonctionne parfaitement pour les routes statiques et non statiques. Voici l'URL est que j'utilise:Problème avec les routes après le déploiement de l'application Sinatra

Aujourd'hui, je déployé mon application simple au-dessus d'Apache et passagers 2. Mon serveur web est sur mon réseau privé et nommé Millhouse. Je veux essentiellement accéder à l'application en utilisant les URL suivantes:

Le probem est que la chaîne « slwa » ne fait pas partie d'aucune de mes URL. Par exemple, lorsque vous essayez de visiter "http: // millhouse/slwa", vous devriez être automatiquement redirigé vers "http: // millhouse/slwa/listshows". Pendant que mon application redirige, elle finit par m'envoyer "http: // millhouse/listshows". La partie "slwa" est manquante. Je ne voulais pas créer un nouvel hôte virtuel, j'ai donc réutilisé l'hôte virtuel "root" sur mon serveur Ubuntu. Voici mon hôte virtuel:

<VirtualHost *:80> 
    ServerAdmin [email protected] 

    DocumentRoot /var/www 
    <Directory /> 
      Options FollowSymLinks 
      AllowOverride None 
    </Directory> 
    <Directory /var/www/> 
      Options Indexes FollowSymLinks MultiViews 
      AllowOverride None 
      Order allow,deny 
      allow from all 
    </Directory> 

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 
    <Directory "/usr/lib/cgi-bin"> 
      AllowOverride None 
      Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
      Order allow,deny 
      Allow from all 
    </Directory> 
    ErrorLog /var/log/apache2/error.log 

    # Possible values include: debug, info, notice, warn, error, crit, 
    # alert, emerg. 
    LogLevel warn 

    CustomLog /var/log/apache2/access.log combined 

    Alias /doc/ "/usr/share/doc/" 
    <Directory "/usr/share/doc/"> 
     Options Indexes MultiViews FollowSymLinks 
     AllowOverride None 
     Order deny,allow 
     Deny from all 
     Allow from 127.0.0.0/255.0.0.0 ::1/128 
    </Directory> 

    ### Here's the only line that I added to the default 
    RackBaseURI /slwa 
</VirtualHost> 

J'ai aussi créé un lien symbolique dans/var/www qui pointe à la dir publique pour mon application. Et enfin, voici mon config.ru:

# This is straight from the Phusion Passnger Users Guide" 
require 'rubygems' 
require 'sinatra' 

root_dir = File.dirname(__FILE__) 

set :environment, ENV['RACK_ENV'].to_sym 
set :root,  root_dir 
set :app_file, File.join(root_dir, 'slwa.rb') 
disable :run 

require 'slwa' 
run Sinatra::Application 

Quelle partie est-ce que je manque?

Merci d'avance pour toute aide!

Tom Purl

Répondre

1

Avez-vous essayé url redirect (: contrôleur,: l'action)?

eu le même problème, qu'il me résoudre ... (sauf pour les biens publics css et js ...)

+0

Je fini par utiliser le paquet EMK-sinatra-url-pour faire le travail de mon URL . J'ai même écrit à ce sujet sur mon blog - http://tompurl.com/2011/01/17/sinatra-lessons-learned/. Merci quand même Udo! –