2010-12-30 6 views
1

Das ist irgendwie komisch, aber ich möchte mehrere Websites auf der gleichen Domain bedienen. Wenn möglich, möchten wir Sub-Domains vermeiden, um URLs für unsere Nutzer einfach zu halten - sie müssen nicht wissen, dass es zwei separate Apps sind. Dies dient lediglich dazu, die Codebasen getrennt zu halten. Irgendwelche Ideen?Wie kann ich mehrere Rails Apps auf einer Domain (und Sub) bedienen?

Zum Beispiel:

Rails App 1 (Refinery CMS) dient:

http://example.com/

http://example.com/about

http://example.com/pricing

Rails App 2 (unser eigentliches App) dient:

http://example.com/account

http://example.com/store

http://example.com/listings

Wir verwenden Rubin 1.9.2, Ruby on Rails, Raffinerie cms, Apache und Beifahrer.

Antwort

9

Wenn Sie Passenger verwenden, lesen Sie den Abschnitt Deploying to a sub URI des Handbuchs - es ist ganz einfach, eine App für einen Sub-URI einzurichten. Möglicherweise müssen Sie auch config.action_controller.relative_url_root in Ihrer App-Konfiguration festlegen.

Edit: Ich habe die Frage falsch gelesen; nicht eine App pro URI, sondern eine App, die einige (aber nicht alle) Endpunkte bedient. Dies ist eigentlich mäßig einfach mit einigen grundlegenden Umschreibungen zu tun.

Stellen Sie Ihre Rails-App beispielsweise auf /railsapp (aber ohne Einstellung relative_url_root) bereit. Nun, in .htaccess:

RewriteRule ^account/(.*)$ railsapp/account/$1 [L] 

Dies wird intern neu zuordnen/Konto/* zu/railsapp/account/*, so lange, wie Sie eine Rewrite pro Pfad einzurichten Ihre Rails-Anwendung Griffe, sollte es funktionieren.

+0

Ich glaube, ich verstehe. Werde es versuchen. Vielen Dank! – chrishomer

0

Subdomains machen es einfacher (daher warum die meisten Sites shop.example.com haben), aber Sie könnten wahrscheinlich Rewrite-Regeln mit namensbasiertem Virtual-Host-Routing verwenden. Wie genau zu tun, bin ich mir nicht sicher. Mehr von einer Apache Rewrite Frage für SuperUser.

Ein Wort der Warnung, wenn Sie SSL verwenden, können Probleme auftreten.

0

Sie könnten es einrichten, zuerst eine App zu treffen, von der Sie erwarten, dass die meisten URLs funktionieren, und wenn es 404s gibt, könnten Sie es anweisen, die andere App als nächstes zu versuchen, obwohl das langsamer als das Routing ist Sie müssen eine Route für jede Seite festschreiben, die auf Refinery CMS erstellt wird.

0

Zur Zeit arbeite ich auch an der gleichen Art von CMS. In meinem Fall auch ich brauche mehr Sub-Domains, wie

www.test1.mydomain.com

www.test2.mydomain.com

www.test3.mydomain.com

www. test4.mydomain.com

hier ist das, was ich tat

in Schienen 3 (wenn Sie auf rails3 sind) können Sie die Sub-Domain-Objekt unter Verwendung Anfrage erhalten können. (Wenn Sie auf Schienen 2.x sind, können Sie Unter domain_fu Plugin)

In meinem Fall habe ich verwendet, um ein vor-Filter die Sub-Domain zu bekommen, danach habe ich die Seite lädt nach der Sub-Domain

für die Entwicklung verwenden Sie die folgende public domain „lvh.me“

http://tbaggery.com/2010/03/04/smack-a-ho-st.html

das für mich sehr nützlich http://railscasts.com/episodes/221-subdomains-in-rails-3

war damit Benutzer haben ihre Domains Ihre Sub-Domain weitergeleitet (mit mas König)

ex: www.clientdomain.com ->http://client.mydomain.com

hoffe, das hilft

prost

sameera

+0

Das Poster wurde speziell um das Hosting ohne Subdomains gebeten. – Ciryon