.htaccess перенаправить домен в подкаталог без изменения URL-адреса

У меня есть следующая настройка: - > domain1.com - это мой основной домен, а также корень документа - > domain2.com - это еще один домен, который зарегистрирован как домен псевдонима (означает, что он точно такой же, как domain1.com), у меня несколько таких доменов.

когда я сейчас хочу перенаправить этот домен на то, что я обычно использую для перенаправления домена на что-то другое (например, на внешний веб-сайт):

RewriteCond %{HTTP_HOST} ^(www\.)?domain2.com$ [NC]
RewriteRule ^(.*) http://somewiredisp.com/user/bla/$1 [L,R]

это обычно используется, если я регистрирую домен для тех, кому нужен хороший URL-адрес для их форумов или что-то еще. Работает как шарм - единственная "проблема" заключается в том, что адресная строка в браузере меняется, но я читал, что с внешними URL-адресами не будет никакого способа сделать это, и поскольку никто не жаловался на это, я в порядке с ним.

Однако теперь я хотел бы связать некоторый url с подкаталогом БЕЗ изменения URL в адресной строке.

domain2.com → domain1.com/subdir (или domain2.com/subdir - это не имеет значения, так как это домен псевдонима).

мой текущий подход будет

RewriteCond %{HTTP_HOST} ^(www\.)?domain2.com$ [NC]
RewriteRule ^(.*) http://domain1.com/subdir/ [P]

который не работает (ошибка 404) - если я вызываю domain1.com/subdir/напрямую, если работает явно.

Я также пробовал несколько вариантов

RewriteRule ^(.*) http://domain2.com/subdir/ [P]
RewriteRule ^(.*) /subdir/ [P]
RewriteRule ^(.*) http://domain1.com/subdir/index.html [P]

все с тем же результатом.

может быть, это просто простая ошибка, но в настоящее время я не знаю:/

Ответы

Ответ 1

Вы можете использовать это правило:

RewriteCond %{HTTP_HOST} ^(www\.)?domain2\.com$ [NC]
RewriteRule !^subdir/ /subdir%{REQUEST_URI} [L,NC]

Это будет префикс каждого запроса для domain2.com с помощью /subdir, если он еще не существует.

Ответ 2

Ниже код отлично работает для меня.

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/folder_name/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder_name/$1
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ folder_name/index.html [L]