Apache httpd.conf для перенаправления ip на имя хоста

У меня есть внешний IP и имя хоста, настроенные для моей машины.

Внутри приложения я использую только имена доменов для доступа к API. Поэтому, когда я пытаюсь получить доступ к своим API через IP-адрес, он показывает 302 временно перенесенную ошибку. Таким образом, для запроса (для главной страницы), который попадает на сервер с IP-адресом, он должен перенаправить на имя хоста.

То есть, когда пользователь нажимает https://XX.XX.XX.XX/main, он должен быть перенаправлен на https://ayz-abc.mysite.com/main

Для этого я попытался использовать перенаправление в httpd.conf для apache.

<VirtualHost XX.XX.XX.XX>

DocumentRoot "/var/www/html"
#ServerName ayz-abc.mysite.com/

 # Other directives here
 RewriteEngine On
 RewriteRule /.* https://ayz-abc.mysite.com/ [R]

</VirtualHost>

Я также пробовал использовать следующие

<VirtualHost *.portnum>
DocumentRoot "/var/www/html"
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule  https://XX.XX.XX.XX/main https://ayz-abc.mysite.com/main [R=301,L]
</VirtualHost>

Plsssss мне помогают.

Ответ 1

Ok. Вам не хватает условия перезаписи

<VirtualHost XX.XX.XX.XX>

DocumentRoot "/var/www/html"
#ServerName ayz-abc.mysite.com/

 # Other directives here
 RewriteEngine On
 RewriteCond %{HTTP_HOST} !^ayz-abc.mysite.com$
 RewriteRule /.* https://ayz-abc.mysite.com/ [R]

</VirtualHost>

Если вы не включите это условие, оно будет перенаправлено даже с именем хоста

Ответ 2

Попробуйте следующее:

RewriteRule $ https://ayz-abc.mysite.com/ [L,R]

Также вы можете просмотреть журналы перезаписи, см. здесь

Ответ 3

Это работает для меня. Добавьте конфигурации в httpd.conf из apache

CASE-1: когда пользователь нажимает http://XX.XX.XX.XX/main или http://ayz-abc.mysite.com/main он должен быть перенаправлен на https://ayz-abc.mysite.com/main

Конфигурация:

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80
<VirtualHost *:80>
ServerName XX.XX.XX.XX
Redirect /main https://ayz-abc.mysite.com/main
</VirtualHost>

CASE 2: Когда пользователь нажимает https://XX.XX.XX.XX/main, он должен быть перенаправлен на https://ayz-abc.mysite.com/main

Конфигурация:

NameVirtualHost *:443
<VirtualHost *:443>
DocumentRoot "/var/www/html"
#Server Name 
ServerName XX.XX.XX.XX
SSLEngine on
SSLOptions +StrictRequire
# Redirect to the specified URL 
Redirect /main https://ayz-abc.mysite.com/main
<Directory />
SSLRequireSSL
</Directory>
....
....
</VirtualHost>

Ответ 4

Если вы НЕ используете API, а хотите, чтобы браузеры и искатели переходили на URL вместо IP-адреса, вы можете использовать RedirectPermanent.

<VirtualHost XX.XX.XX.XX>

    RedirectPermanent / http://ayz-abc.mysite.com/

</VirtualHost>

<VirtualHost XX.XX.XX.XX>

    DocumentRoot "/var/www/html"
    ServerName ayz-abc.mysite.com/

</VirtualHost>

У него есть преимущество в ответе с 301 статусом HTTP, который сигнализирует "пожалуйста, используйте URL, в который вы перенаправлены в будущем", что помогает в поисковых системах. Вы должны использовать одно и то же решение, если переместите свой сайт в новый домен.

Ответ 5

Если вы используете домен https, добавьте следующее:

# BEGIN HTTPS Redirection Plugin
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTP_HOST} ^XX\.XX\.XX\.XX$
RewriteRule ^(.*)$ https://your-domain-name.com/$1 [L,R=301]
</IfModule>
# END HTTPS Redirection Plugin

Мы используем плагин перенаправления https на сайте. Над блоком кода генерируется плагин, и мы добавили только две строки в блок кода. Ниже две строки отвечают за установку IP на Перенаправление домена:

RewriteCond %{HTTP_HOST} ^XX\.XX\.XX\.XX$
RewriteRule ^(.*)$ https://your-domain-name.com/$1 [L,R=301]

Здесь ^ XX.XX.XX.XX $ - ваш IP-адрес, замените его следующим образом: ^ 12.34.56.78 $ на ваш IP-адрес сервера.

Спасибо