2016-10-17 6 views
5

У меня есть веб-сайт, размещенный в корневом домене, например www.example.com. Могу ли я сделать отображение следующим образом-Требования к типичному требованию к домену

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 

Пожалуйста, обратите внимание, что все указанные адреса на левой стороне работают правильно (отображение делается). Порталы являются переменными, поэтому число таких порталов может быть n.

Заранее спасибо за помощь

ответ

0

Мне потребовалось много RnD, чтобы наконец прийти к решению, на которое я точно смотрел. Большинство ответов дано частично corrert. Однако требование было очень типичным, и я решил его следующим образом.

Я разработал сервлет, который проверяет имена хостов (допустимые имена хостов хранятся в базе данных) и действительные шаблоны URL-адресов и делают соответствующую маршрутизацию. (Маршрутизация на стороне сервера). Это также включает проверки того, как происходит дальнейшая маршрутизация, например, если кто-то посещает сайт www.porta1.com и нажимает ссылку на него, он должен приземлиться на www.portal1.com/aboutus.

Я знаю много тяжелой работы, но работает именно то, что нужно.

1

Вы не можете сделать следующее отображение с DNS-серверов, эти серверы обрабатывают только доменное имя. , например. www.example.com -> www.portal2.com или example.com -> www.example.com

Но вы можете сделать это сопоставление с 301 redirects.

Это question немного похоже.

+0

Спасибо за ответ @Jack Wire! 301 перенаправления будут отображать результирующие URL-адреса в адресной строке браузера. Например, если пользователь запрашивает www.portal1.com из браузера, 301 перенаправит его на www.example.com/portal1. Более поздний URL-адрес также будет отображаться в адресной строке браузера. Мы хотим, чтобы пользователь чувствовал, что он все еще просматривает www.portal1.com – Sumit

+0

Я не знал, что вы хотите, чтобы перенаправление было невидимым для пользователей. В этом случае вы должны использовать решение @pedrofb. Он создаст невидимую переадресацию на целевой URL. –

1

Вы можете использовать Tomcat rewrite module

Создать пустой ROOT контекст в Tomcat (без каких-либо приложений, развернутых в нем). Поместите context.xml файл в каталоге WebApps под ROOT/META-INF, со следующим содержанием

<?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 также rewrite.config файл в каталоге ROOT/WEB-INF с этим содержанием

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

Да. Вы можете перенаправить через URL-переписать на уровне веб-приложений, например, переписать URL-адрес IIS, Apache.

Смежные вопросы