2016-10-17 22 views
5

Mam witrynę hostowaną dla domeny głównej, powiedzmy www.example.com. Mogę zrobić mapowanie następujące znaczenie:Wymóg typowego odwzorowania domeny

www.example.com/portal1 mapped to www.portal1.com 
www.example.com/poral2 mapped to www.portal2.com 
www.example.com/portal1/product/product1-> www.portal1.com/product/product1 
www.example.com/portal2/product/product1-> www.portal2.com/product/product1 

Należy pamiętać, że wszystkie adresy URL wymienione na lewej stronie działają poprawnie (mapowanie odbywa). Portale są zmienne, więc może być n liczba takich portali.

Dzięki z góry za pomoc

Odpowiedz

0

Zajęło mi dużo RnD, aby w końcu dotrzeć do rozwiązania, na które dokładnie patrzyłem. Większość udzielonych odpowiedzi jest częściowo poprawna. Jednak wymóg był bardzo typowy i rozwiązałem go w następujący sposób.

Opracowałem serwlet, który sprawdza nazwy hostów (prawidłowe nazwy hostów są przechowywane w bazie danych) i poprawne wzorce adresów URL i odpowiednio routuje. (Routing po stronie serwera). Obejmuje to również sprawdzanie, w jaki sposób odbywa się dalsze kierowanie, np. Jeśli ktoś odwiedza www.porta1.com i link kliknięć na nim, powinien wylądować na stronie www.portal1.com/aboutus.

Znam dużo ciężkiej pracy, ale działa dokładnie to, co było potrzebne.

1

Nie można wykonać następujące mapowanie z serwerami DNS, serwery te obsługiwać tylko nazwę domeny. np. www.example.com -> www.portal2.com lub example.com -> www.example.com

Ale możesz zrobić to mapowanie z 301 redirects.

Ten numer question jest trochę podobny.

+0

Dzięki za odpowiedź @Jack Wire! Przekierowania 301 będą wyświetlać wynikowe adresy URL w pasku adresu przeglądarki. Na przykład, jeśli użytkownik zażąda od przeglądarki www.portal1.com, 301 przekieruje go na adres www.example.com/portal1. Później adres URL będzie również widoczny na pasku adresu przeglądarki. Chcemy, aby użytkownik czuł się tak, jakby nadal przeglądał www.portal1.com – Sumit

+0

Nie wiedziałem, że chcesz, aby przekierowanie było niewidoczne dla użytkowników. W takim przypadku musisz użyć rozwiązania @pedrofb. Stworzy niewidoczne przekierowanie do docelowego adresu URL. –

1

Można użyć Tomcat rewrite module

Utwórz pusty ROOT kontekstu w Tomcat (bez aplikacji wdrożonych w nim). Umieść plik context.xml w katalogu webapps pod ROOT/META-INF, o następującej treści

<?xml version='1.0' encoding='UTF-8'?> 
<Context docBase="ROOT" path="/" reloadable="true" crossContext="true"> 
    <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" /> 
</Context> 

Set również plik w katalogu ROOT/WEB-INFrewrite.config z tej zawartości

RewriteCond %{HTTP_HOST} ^www.portal1.* [NC] 
RewriteRule ^/(.*)$ /portal1/$1 [L] 
RewriteCond %{HTTP_HOST} ^www.portal2.* [NC] 
RewriteRule ^/(.*)$ /portal2/$1 [L] 
0

Tak. Możesz wykonać przekierowanie poprzez przepisywanie URL-i na poziomie aplikacji/strony internetowej, na przykład przepisanie URL-a IIS, Apache.

Powiązane problemy