Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/01/2010, à 23:46

patfrat

htaccess, rewrite, rails, cgi : je galère

Bonjour,
Je galère un peu sur un sujet qui n'est pas forcément lié à Ubuntu mais j'espère que quelqu'un pourra m'aider.
Je dispose d'un hébergement chez Ovh en mutualisé.
J'ai un nom de domaine qui pointe dans le dossier www/ de mon compte et son sous-domaine en www. également.
Et ceci ne peut pas être modifié.

J'ai une application en RubyOnRails que j'ai mis dans un sous-dossier que j'appelerai ici monapp/
Et je dois faire pointer le nom de domaine dans le sous-dossier monapp/public/
De plus, Rails ne fonctionne qu'avec CGI sur ce type d'hébergement.

J'ai créé un .htaccess à la racine www/ qui contient ceci :

AddHandler default-handler .html
AddHandler cgi-script .cgi
Options +FollowSymLinks +ExecCGI
RewriteEngine On

# Homepage par défaut si index.html existe
RewriteRule ^$ monapp/public/index.html [L]

# Pour les fichiers (images ...)
RewriteCond %{DOCUMENT_ROOT}/monapp/public/$1 -f
RewriteRule ^(.*)$ monapp/public/$1 [L]

# traitement des chemins autres que les fichiers
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ monapp/public/dispatch.cgi?$1 [L,QSA]

Ceci fonctionne presque bien.
Les requêtes sont bien dirigées vers mon application rails dans son sous-dossier.
Par contre, je me retrouve avec tous mes liens en http://mondomaine.com/monapp/public/... !!!!!
Que faut-il faire pour que mes liens présentent simplement http://mondomaine.com/..

Est-ce que j'ai raté un truc dans mon .htaccess ou serait-ce plutôt de la configuration Rails à faire ?

Dernière modification par patfrat (Le 07/01/2010, à 23:47)

Hors ligne

#2 Le 08/01/2010, à 08:43

wblitz

Re : htaccess, rewrite, rails, cgi : je galère

essaie en activant le mode proxy :

sudo a2enmod proxy proxy_http && sudo /etc/init.d/apache2 reload

ensuite, ajoute le flag P à tes RewriteRule :

RewriteRule ^(.*)$ monapp/public/$1 [L,P]

(idem pour les autres)

Dernière modification par wblitz (Le 08/01/2010, à 08:43)


"Un optimiste, c'est un homme qui plante deux glands et qui s'achète un hamac" - Jean de Lattre de Tassigny
Pensez à mettre [RÉSOLU] dans le sujet de vos posts une fois qu'ils le sont...
quelques docs

Hors ligne

#3 Le 08/01/2010, à 10:04

patfrat

Re : htaccess, rewrite, rails, cgi : je galère

Salut,
Je n'ai pas la main sur le serveur puisque c'est de l'hébergement mutualisé.
Et j'ai essayé quand même avec l'option P mais ça ne fonctionne pas.
Je pense peut-être à une config rails à changer pour qu'il ne me mette pas le chemin du sous-dossier dans tous les liens, images, scripts !!!

Hors ligne

#4 Le 08/01/2010, à 10:08

patfrat

Re : htaccess, rewrite, rails, cgi : je galère

Par contre, je viens de remarquer ceci dans le code source de la page affichée :

<link rel="shortcut icon" href="/favicon.ico" />
<!-- Framework Javascript -->
<script src="/monapp/public/javascripts/prototype.js" type="text/javascript"></script>

Le favicon ne contient pas le sous-dossier, par contre, tout ce qui est script, css et liens oui.
Pas les images.

Il doit y avoir d'autres règles à ajouter au .htaccess je suppose.

Hors ligne

#5 Le 08/01/2010, à 15:36

wblitz

Re : htaccess, rewrite, rails, cgi : je galère

je ne connais pas l'appli, mais pour les pages, une partie du contenu doit être généré à la volée et les liens sont surement faits à partir du DocumentRoot, donc logique. regarde dans l'appli si tu ne peux pas configurer "le chemin de base" (/monapp/public pour toi).

pour les RewriteRule, c'est bizarre. après recherche, un L est logiquement suffisant hmm tu as accès aux journaux apache pour voir s'il y a des erreurs ?


"Un optimiste, c'est un homme qui plante deux glands et qui s'achète un hamac" - Jean de Lattre de Tassigny
Pensez à mettre [RÉSOLU] dans le sujet de vos posts une fois qu'ils le sont...
quelques docs

Hors ligne

#6 Le 08/01/2010, à 16:04

patfrat

Re : htaccess, rewrite, rails, cgi : je galère

Je penche aussi sur la config de l'appli : RAILS_ROOT
Là, il me prend forcément monapp/public
Je vais tenter de voir comment ça se configure.
Enfin, ce qui est bizarre là, c'est que le site s'affiche bien, images, css, ...
Mais les liens sont avec monapp/public/ pour le CSS, pas les images
C'est pour çà que je pense qu'il faudrait aussi ajouter des trucs dans le .htaccess
Je dois avoir une config pas finie !

Hors ligne

#7 Le 08/01/2010, à 16:08

patfrat

Re : htaccess, rewrite, rails, cgi : je galère

Mon RAILS_ROOT renvoie bien /home/user/www/monapp
C'est normal et c'est OK donc ça ne vient pas de là ...

Hors ligne

#8 Le 08/01/2010, à 16:14

patfrat

Re : htaccess, rewrite, rails, cgi : je galère

Je viens de faire un petit test.
Du moment où j'écris moi même un lien du genre

<%= link_to "essai", "/test" %>
ou
<%= link_to "essai", "test" %>

Le lien est bon.
Par contre, tout ce qui est pris en charge par Rails comme les css, js ou mes propres liens du genre :
<%= link_to "essai", :action => "essai" %>
Ces derniers sont tous réécrits avec monapp/public
Donc là, je touche probablement à un problème de Rails et à un chemin par défaut à lui passer dans la construction des liens, peut-être dans la fichier config/routes.rb pour ceux qui connaissent !

Hors ligne

#9 Le 08/01/2010, à 16:14

wblitz

Re : htaccess, rewrite, rails, cgi : je galère

C'est pour çà que je pense qu'il faudrait aussi ajouter des trucs dans le .htaccess
Je dois avoir une config pas finie !

le mode rewrite ne modifie que l'url demandée, en aucun cas le contenu de la page. c'est dans l'application qu'il faut que tu paramètres l'url de base de l'application : /monappli/public et non DOCUMENT_ROOT/monappli/public comme ça doit être le cas aujourd'hui (RAILS_ROOT doit rester comme il est et il y a surement une autre variable à positionner pour ça... à voir dans la documentation ou le code)


"Un optimiste, c'est un homme qui plante deux glands et qui s'achète un hamac" - Jean de Lattre de Tassigny
Pensez à mettre [RÉSOLU] dans le sujet de vos posts une fois qu'ils le sont...
quelques docs

Hors ligne

#10 Le 08/01/2010, à 16:53

patfrat

Re : htaccess, rewrite, rails, cgi : je galère

Mon appli rails m'indique ceci si ça peut aider : pour http://monapp.com/test situé dans /home/user/www/monapp

...
"DOCUMENT_ROOT"=>"/home/user/www"
"SCRIPT_FILENAME"=>"/home/user/www/monapp/public/dispatch.cgi"
"REDIRECT_QUERY_STRING"=>"test"
"REDIRECT_URL"=>"/test"
"GATEWAY_INTERFACE"=>"CGI/1.1"
"SERVER_PROTOCOL"=>"HTTP/1.1"
"REQUEST_METHOD"=>"GET"
"QUERY_STRING"=>"test"
"REQUEST_URI"=>"/test"
"SCRIPT_NAME"=>"/monapp/public/dispatch.cgi"
...

Dernière modification par patfrat (Le 08/01/2010, à 16:53)

Hors ligne

#11 Le 11/01/2010, à 10:39

wblitz

Re : htaccess, rewrite, rails, cgi : je galère

pour le .htaccess, essaie en ajoutant ça dedans (en début de fichier) :

RewriteBase /

pour le problème des liens, je ne connais pas suffisamment rails pour pouvoir t'aider hmm


"Un optimiste, c'est un homme qui plante deux glands et qui s'achète un hamac" - Jean de Lattre de Tassigny
Pensez à mettre [RÉSOLU] dans le sujet de vos posts une fois qu'ils le sont...
quelques docs

Hors ligne

#12 Le 11/01/2010, à 23:10

patfrat

Re : htaccess, rewrite, rails, cgi : je galère

Le RewriteBase / ne change rien.
J'ai réécrit mes .htaccess comme ceci :

A la racine de mon hébergement :

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/monurl.com
RewriteRule ^(.*)$ /monapp/public/$1

Puis dans le sous-dossier /monapp/public/ :

Options +FollowSymLinks 
Options +ExecCGI
AddHandler default-handler .html
AddHandler cgi-script .cgi
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} -d
RewriteCond %{REQUEST_URI} ^.*[^\/]$
RewriteRule ^(.*)$ $1/
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.cgi?$1 [QSA,L]
ErrorDocument 500 500.html

Toujours le même problème avec les liens qui sont tous réécrit en monapp/public/...

Le soucis, il faudrait pouvoir redéfinir le DocumentRoot pour pointer dans le dossier public/ comme je peux le faire pour mes autres domaines rattaché à mon hébergement.
Mais mon nom de domaine principal, lui, pointe à la racine du dossier www/ de mon utilisateur chez Ovh.
J'ai eu l'idée de faire par exemple une redirection automatique de http://monapp.com en http://www.monapp.com et de faire pointer http://www.monapp.com dans le dossier monapp/public/ mais Ovh ne l'autorise pas.

Je suis en discussion avec le support Ovh à ce sujet d'ailleurs et j'attends la réponse.
Pour l'instant, ils m'ont orienté vers : http://www.apache-mod-rewrite.fr/
Et ce site nous propose aussi http://www.urlrewriting.fr/
A mettre dans les favoris mais il faut que j'y cherche aussi les réponses à mes problèmes !

Hors ligne