web-dev-qa-db-fra.com

Apache httpd.conf pour rediriger l'ip en nom d'hôte

J'ai une adresse IP externe et un nom d'hôte configurés pour ma machine.

Dans l'application, j'utilise uniquement les noms de domaine pour accéder aux API. Ainsi, lorsque j'essaie d'accéder à mes API via une adresse IP, il affiche l'erreur 302 déplacée temporairement . Ainsi, pour les demandes (pour la page d'accueil) qui se connectent au serveur avec une adresse IP, il convient de rediriger le nom d'hôte. 

C'est-à-dire que lorsque l'utilisateur clique sur https: //XX.XX.XX.XX/main il devrait être redirigé vers https://ayz-abc.mysite.com/main

Pour cela, j'ai essayé d'utiliser la redirection dans httpd.conf d'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>

J'ai aussi essayé avec ce qui suit

<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 aidez-moi. 

14
Poppy

D'accord. Il vous manque une condition de réécriture

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

Si vous n'incluez pas cette condition, elle sera redirigée même avec le nom d'hôte.

9
William Greenly

Cela fonctionne pour moi. Ajouter les configurations dans httpd.conf d'Apache

CASE-1: lorsque l'utilisateur tape http: //XX.XX.XX.XX/main ou http://ayz-abc.mysite.com/main il devrait être redirigé vers https : //ayz-abc.mysite.com/main

Configuration:

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

CAS 2: Lorsque l'utilisateur clique sur https: //XX.XX.XX.XX/main il devrait être redirigé vers https://ayz-abc.mysite.com/main

Configuration:

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>
1
Poppy

Essaye ça:

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

Vous pouvez aussi voir les journaux de réécriture, voir ici

1
Ankit

Si vous n'utilisez PAS l'API mais souhaitez simplement que les navigateurs et les robots d'exploration accèdent à l'URL au lieu d'une adresse IP, vous pouvez utiliser 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>

Il présente l’avantage de répondre avec le statut 301 HTTP, ce qui signifie "veuillez utiliser l’URL vers laquelle vous serez redirigé à l’avenir", ce qui facilite la tâche des moteurs de recherche. Vous devriez utiliser la même solution si vous déplacez votre site vers un nouveau domaine.

0
Bojan Hrnkas