2017-01-20 3 views
6

Ich baue einen Webscheduler mit einer mandantenfähigen Struktur, was ich versuche, jedem Käufer eine benutzerdefinierte URL zuzuweisen, die auf meine Anwendung verweist.URLs für die Umleitung auf eine bestimmte URL festlegen, ohne sie neu zu schreiben

So im Wesentlichen, wenn ein Benutzer eine Lizenz von mir kaufen, ich werde eine benutzerdefinierte URL auf meinem Webserver wie folgt erstellen:

http://webserver/foo.scheduler.com/login 

wo foo ist der Name des Benutzers, der die Lizenz buyed hat, und scheduler ist ein Standard-Teil der uRL, ein weiteres Beispiel mit mehr Käufer:

http://webserver/foo.scheduler.com/login 
http://webserver/foo2.scheduler.com/login 
http://webserver/foo3.scheduler.com/login 

im wesentlichen gibt es drei Käufer (meine Kunden), die jeweils individuelle Endpunkt erlauben Sie mir, die richtigen Datenbank-Anmeldeinformationen zu identifizieren, denn in meiner Logik jeder Mieter haben eine spezifische db für mehr Datenorganisation.

Eigentlich ist meine Anwendung zu diesem Endpunkt zu finden:

http://webserver/scheduler 

ich, wenn wissen will alle benutzerdefinierten Urls http://webserver/scheduler möglicher Punkt ist, ohne die URL in dem Browser neu zu schreiben, so zum Beispiel, wenn der Benutzer gehen http://webserver/foo.scheduler.com/login in der wahren ist http://webserver/scheduler/login, aber der Benutzer weiterhin http://webserver/foo.scheduler.com/login zu sehen.

Wie geht das? In meinem .htaccess, erhältlich in der Wurzel des Anwendungsordner habe ich diesen Inhalt:

RewriteEngine On 

RewriteBase /webscheduler/ 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 

dies erlauben Sie mir den Basispfad auf den Index neu zu schreiben, und die Spur auf den spezifischen Controller Shunt.

+0

Haben Sie ein Wildcard-SSL-Zertifikat für '* .scheduler.com'? –

Antwort

3

Glücklich zu helfen mit diesem.

Erhalten Sie ein gültiges SSL-Zertifikat für * .scheduler.com. Sie werden das brauchen, wenn Sie das zur Arbeit bringen wollen. Möchten Sie wirklich HTTPS verwenden? Ihre andere URL ist nicht HTTPS. Dann müssen Sie Ihren virtuellen Host für * .scheduler.com so einrichten, dass er mit diesem Zertifikat ordnungsgemäß funktioniert. Only having:

<VirtualHost *:443> 
    ServerAlias *.scheduler.com 
    DocumentRoot "/var/www/html/progetti/scheduler" 
</VirtualHost> 

sein wird, so etwas nicht genug. Sie benötigen alle mod_ssl-Einstellungen, die Sie für den anderen virtuellen Host eingerichtet haben.Sie können einfach diesen Standard-HTTPS-Host verwenden, anstatt einen anderen hinzuzufügen und ihn zu ändern.

Das erste, was zu tun ist, holen Sie Ihr Hosting für https: //*.scheduler.com/ und dann zeigen Sie es einfach an der richtigen Stelle.

Was meinen Sie mit einem Endpunkt von http://webserver/scheduler? Dies ist kein gültiger Domainname. Bitte klären Sie, was Sie damit meinen und ich werde meine Antwort mit weiteren Informationen aktualisieren. Ist der Code auf demselben Server?

-

aktualisieren

So dies ohne SSL zu tun, fügen Sie folgendes zu Ihrem "000-default.conf", nach dem, was zur Zeit gibt es:

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName www.scheduler.com 
    ServerAlias *.scheduler.com 
    UseCanonicalName off 
    DocumentRoot /var/www/html/progetti/scheduler 
    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 

    <Directory /var/www/html/progetti/scheduler> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride All 
     Order allow,deny 
     Allow from all 
    </Directory> 
</VirtualHost> 

-

Aktualisieren

Um http://webserver/foo.scheduler.com arbeiten und dienen/Scheduler, fügen Sie dies zu dem VirtualHost, die bereits dort war. Nicht das Neue oben, das Original oben.

RewriteEngine on 
RewriteRule ^(/[^./]+\.scheduler\.com)(?:$|/(.*)$) /scheduler/$2 

Lassen Sie mich irgendwelche Probleme wissen. Wenn Sie es lieber in Ihre .htaccess-Datei einfügen möchten, muss es aktualisiert werden.

+0

Hallo, danke für die Antwort. Ich baue die Anwendung auf meinem Himbeer-LAMP-Webserver, also habe ich kein SSL-Zertifikat. Wenn möglich, ohne ssl? Für andere Details überprüfen Sie meine Pastebin hier: http://pastebin.com/dLX9jynk – AgainMe

+0

Ja, es bedeutet nur, dass Sie nicht verwenden können https: //, aktualisierte ich meine Antwort mit, wie das funktioniert. – SuperDuperApps

+0

Ich habe die '000-default.conf' aktualisiert, aber das funktioniert nicht. Ich habe den Dienst apache2 auf meinem raspberry neu gestartet, also tippe ich im Browser diese URL ein: "http: // webserver/foo.scheduler.com", aber ich bekomme: 404 statt der Anwendung 'scheduler'-Ordner – AgainMe

1

Hinweis: Ich nehme wörtlich Ihre Aussagen, dass die App http:// verwendet und die Clients https:// URLs verwenden. Auch ich gehe davon aus, dass die Clients den gleichen Server treffen wie der, der die App hostet.


wahrscheinlich einfachste Weg, dies zu tun, ist ein Virtualhost für Ihre tatsächliche Anwendung und einem separaten für die anderen URLs zu konfigurieren.

Ihre Bewerbung Leben in /var/www/html/scheduler So vorausgesetzt, dann Ihre vorhandenen VirtualHost wie folgt aussieht:

<VirtualHost *:80> 
    ServerName webserver 
    DocumentRoot "/var/www/html" 
</VirtualHost> 

Sie müssten hinzufügen ändern Sie Ihre conf.d/ssl.conf haben so etwas wie: Sie

NameVirtualHost *:443 

<VirtualHost *:443> 
    ServerAlias *.scheduler.com 
    DocumentRoot "/var/www/html/scheduler" 
</VirtualHost> 
Verwandte Themen