Назад | Перейти на главную страницу

Перенаправить несколько доменов в подпапки и скрыть подпапку из URL

Я установил два виртуальных хоста на одном IP-адресе и одном корне документа с Apache, потому что я хочу использовать общие файлы и содержимое в корне документа.

Я хочу, чтобы мой второй веб-сайт указывал на подпапку корня документа

http://example.com Loads http://example.com/subfolder

Я пробовал различные правила перезаписи в .htaccess, которые все они могут перенаправлять, но сохраняйте подпапку в URL-адресе, который мне не нравится, я имею в виду, что URL-адрес будет

 http://example.com/subfolder

пока я хочу

 http://example.com

это то, что я пробовал

RewriteCond %{HTTP_HOST} ^(www.)?example.com$   
RedirectMatch ^/$ http://example.com/subfolder

ИЛИ

RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(.*)$ /subfolder/$1 [L]

второй также дает 500 Internal Server Error, что мне делать?

Вы хотите не выполнять перенаправление, а переписать запрос с помощью RewriteRule. Так должно быть так:

RewriteCond %{HTTP_HOST} ^(www.)?example1.com$   
RewriteRule !^subfolder1/ subfolder1%{REQUEST_URI} [L]
RewriteCond %{HTTP_HOST} ^(www.)?example2.com$   
RewriteRule !^subfolder2/ subfolder2%{REQUEST_URI} [L]

F.ex. запрос http://www.example1.com/foo.html будет обрабатываться Apache, как если бы это был запрос http://www.example1.com/subfolder1/foo.html. Измените домен в этом запросе, и файл будет обслуживаться из подпапки 2.

При тестировании своего решения я обнаружил, что это очень похоже на вашу проблему:
Запрос превысил ограничение в 10 внутренних перенаправлений из-за возможной ошибки конфигурации.?

Термин «Перенаправление» означает, что ваш сервер сообщает браузеру, что нужно загрузить другую страницу вместо той, которую он запросил. Когда браузер сделает это, он также обновит путь в строке местоположения.

Чтобы скрыть новое местоположение, вам нужно вместо этого использовать mod_rewrite. Это модуль, который будет смотреть на то, что запрашивает сервер, и переводить это в другое место на сервере без перенаправления.