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

Перенаправление между двумя доменами, указанными на один и тот же каталог сервера, без изменения URL-адреса

у меня есть domain1.com и domain2.com.

domain1.com это основной домен, который указывает на IP-адрес сервера 123.123.123.123 точно в каталог public_html.

domain2.com это домен, на который я хочу перенаправить domain1.com без изменения URL-адреса в браузере пользователя. (Примечание: этот домен будет доменом профиля пользователя).

Итак, вместо того, чтобы вводить domain1.com/users/John, Я напечатаю domain2.com.

domain2.com указывает на тот же IP-адрес 123.123.123.123 и в тот же каталог domain1.com (public_html).

Я указал domain2.com на тот же сервер и каталог, чтобы получить к нему доступ из htaccess domain1.com.

Итак, я попробовал следующее в .htaccess из public_html:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain2.com
RewriteRule ^(.*) https://domain1.sa/users/John/$1 [P]

Но это возвращает HTTP-код ошибки 500!

Примечание: у меня есть выделенный сервер.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain2.com
RewriteRule ^(.*) https://domain1.sa/users/John/$1 [P]

Непонятно, почему это приведет к ошибке 500, если только mod_proxy или mod_rewrite не установлены или настроены неправильно? Или у вас, возможно, конфликт с другими директивами? Вы должны проверить свой журнал ошибок на предмет специфики ошибки.

Однако, если два домена указывают на один и тот же сервер / каталог, и вы хотите сохранить domain2.com (исходный URL-адрес) в адресной строке браузера, тогда вам не придется проксировать запрос (как вы пытаетесь сделать здесь). Казалось бы, все, что вам нужно, - это простая внутренняя перезапись (в том же домене). Например:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain2\.com
RewriteRule !^users /users/John%{REQUEST_URI} [L]

Регулярное выражение !^users состоит в том, чтобы избежать цикла перезаписи (который также проявится как ошибка 500 в браузере).

Итак, вместо того, чтобы вводить domain1.com/users/John, Я напечатаю domain2.com.

Но обратите внимание, что приведенный выше запрос отправит запрос на /users/John/ (с косой чертой в конце), а не /users/John (без косой черты), как вы здесь заявили - это проблема?

И вы хотите переписать из /<something> к /users/John/<something> - согласно опубликованному вами образцу кода? Хотя это не упоминается в тексте вашего вопроса? Если вы хотите переписать запросы только для самого домена, т.е. domain2.com/ и нет domain2.com/<something> тогда сказанное выше можно упростить. Например:

RewriteCond %{HTTP_HOST} ^domain2\.com
RewriteRule ^$ /users/John [L]