.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]