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-адрес сервера.
Спасибо