2017-01-20 41 views
6

Buduję webscheduler, który ma wielowątkową strukturę, a ja próbuję zrobić to przypisać niestandardowy URL, który wskazuje mojej aplikacji każdemu kupującemu.Ustawianie adresów URL przekierowania do określonego adresu URL bez przepisywania

Więc zasadniczo, gdy użytkownik kupić licencję ode mnie, będę utworzyć niestandardowy adres URL na mój serwer WWW, takich jak ten:

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

gdzie foo jest nazwą użytkownika, który ma wykupionej licencji oraz scheduler jest domyślną częścią adresu URL, kolejny przykład z większą liczbą odbiorców:

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

zasadzie istnieją trzy odbiorców (moi klienci), każdy zwyczaj końcowym pozwalają mi zidentyfikować odpowiednie poświadczenia bazy danych, bo w moim logiki każdego najemca konkretny db, dla większej organizacji danych.

Właściwie moja aplikacja znajduje się do tego punktu końcowego:

http://webserver/scheduler 

Chcę wiedzieć, czy jest możliwe punkt wszystkich niestandardowych URL http://webserver/scheduler, bez przepisywania adresu URL w przeglądarce, tak na przykład, gdy użytkownik przejść do http://webserver/foo.scheduler.com/login w rzeczywistości to http://webserver/scheduler/login, ale użytkownik nadal widzi http://webserver/foo.scheduler.com/login.

Jak to zrobić? W moim .htaccess, dostępne wewnątrz katalogu głównego folderu aplikacji mam tej treści:

RewriteEngine On 

RewriteBase /webscheduler/ 

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

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

To pozwoli mi przepisać ścieżkę bazową do indeksu i manewrowania ślad do konkretnego sterownika.

+0

Czy posiadasz certyfikat SSL z wildcard dla '* .scheduler.com'? –

Odpowiedz

3

szczęśliwy, aby pomóc z tym.

Uzyskaj ważny certyfikat SSL dla * .scheduler.com. Będziesz tego potrzebował, jeśli chcesz, aby to działało. Czy na pewno chcesz korzystać z HTTPS? Twój drugi URL to nie HTTPS. Następnie musisz skonfigurować serwer wirtualny, aby * .scheduler.com działał poprawnie z tym certyfikatem. Only having:

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

To nie będzie wystarczająco dużo. Potrzebujesz wszystkich ustawień mod_ssl tam, jak masz z innym wirtualnym hostem.Możesz po prostu użyć domyślnego hosta HTTPS zamiast dodawać inny i modyfikować go.

Pierwszą rzeczą, którą musisz zrobić, to sprawić, aby Twój hosting działał na https: //*.scheduler.com/, a następnie wskaż go we właściwym miejscu.

Co masz na myśli, że twój punkt końcowy to http://webserver/scheduler? To nie jest poprawna nazwa domeny. Proszę wyjaśnić, co przez to rozumiesz, a ja zaktualizuję odpowiedź, podając więcej informacji. Czy kod znajduje się na tym samym serwerze?

-

Aktualizacja

Więc to zrobić bez SSL, należy dodać następujące wpisy do "000-default.conf", po tym, co obecnie jest tam:

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

-

Aktualizacja

Aby wykonać http://webserver/foo.scheduler.com pracę i służyć/harmonogramu, dodaj to do VirtualHost, który już tam był. Nie nowy dodany powyżej, oryginalny na górze.

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

Daj mi znać. Jeśli wolisz umieścić go w swoim pliku .htaccess, będzie on wymagał aktualizacji.

+0

Witam, dziękuję za odpowiedź. Buduję aplikację na serwerze malinowym LAMP, więc nie mam żadnego certyfikatu SSL. Jeśli to możliwe, zrób to bez ssl? Dla innych szczegółów sprawdź mój pastebin tutaj: http://pastebin.com/dLX9jynk – AgainMe

+0

Tak, to po prostu oznacza, że ​​nie możesz użyć https: //, zaktualizowałem swoją odpowiedź, jak zrobić tę pracę. – SuperDuperApps

+0

Zaktualizowałem '000-default.conf', ale nie mogę tego uruchomić. Ponownie uruchomiłem apache2 usługi na mojej malince, więc wpisuję w przeglądarce ten adres: 'http: // webserver/foo.scheduler.com', ale otrzymuję: 404 zamiast folderu' scheduler' aplikacji – AgainMe

1

Uwaga: Podejmuję dosłownie oświadczenia, że ​​aplikacja używa numeru http://, a klienci będą używać adresów URL https://. Ponadto zakładam, że klienci trafiają na ten sam serwer, na którym znajduje się aplikacja.


Prawdopodobnie najprostszym sposobem na to jest skonfigurowanie jednego VirtualHost dla rzeczywistej aplikacji i osobnego dla innych adresów URL.

Więc zakładając swoje życie aplikacyjnych w /var/www/html/scheduler, wówczas istniejący VirtualHost wygląda następująco:

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

Trzeba by dodać zmienić conf.d/ssl.conf mieć coś takiego:

NameVirtualHost *:443 

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