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
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! –