Я установил два виртуальных хоста на одном 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. Это модуль, который будет смотреть на то, что запрашивает сервер, и переводить это в другое место на сервере без перенаправления.