web-dev-qa-db-fra.com

Supprimer l'adresse IP de l'URL du site Web à l'aide d'apache

Je suis sur une instance EC2 et un domaine domain.com est lié aux serveurs de noms EC2 et, heureusement, il sert mes pages si je tape domain.com dans l'URL.

Cependant, lorsque la page est servie, elle résout l'URL en: 1.1.1.10/directory/page.php.

À l’aide d’Apache, j’ai configuré le serveur virtuel virtuel suivant, en suivant les exemples fournis à l’adresse http://httpd.Apache.org/docs/2.0/dns-caveats.html

Listen 80
NameVirtualHost 1.1.1.10:80

<VirtualHost 1.1.1.10:80>

DocumentRoot /var/www/html/directory
ServerName domain.com

# Other directives here ...

<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=290304000, public"
</FilesMatch>
</VirtualHost>

Cependant, je ne reçois aucun changement dans la façon dont l'URL est affichée.

Il s’agit du seul VirtualHost configuré sur ce site et j’ai confirmé que c’est celui qui est utilisé, car j’ai réussi à le casser plusieurs fois lors de l’expérimentation de la configuration.

Les entrées de route53 que j'ai sont:

domain.com A 1.1.1.10
domain.com NS ns-11.awsdns-11.com 
         ns-111.awsdns-11.net 
         ns-1111.awsdns-11.org 
         ns-1111.awsdns-11.co.uk
domain.com SOA ns-11.awsdns-11.com. awsdns-hostmaster.Amazon.com. 1 1100 100 1101100 11100
2
sapatos

Tout d'abord, utilisez <VirtualHost *:80> au lieu de <VirtualHost 1.1.1.10:80>. Ainsi, votre hôte virtuel s’applique quelle que soit l’adresse IP de votre serveur.

Deuxièmement, vous devez émettre une redirection si le nom d'hôte ne correspond pas à vos attentes. Je recommanderais d'avoir deux hôtes virtuels. Le premier est celui par défaut pour tout nom de domaine ou adresse IP inattendu. Il peut émettre une redirection vers le nom de domaine correct. Le second devrait être celui de votre nom de domaine. Quelque chose comme:

<VirtualHost *:80>
    ServerName localhost.localdomain
    Redirect permanent / http://domain.com/
</VirtualHost>

<VirtualHost *:80>
    ServerName domain.com
    DocumentRoot /var/www/html/directory

    # Other directives here ...
</VirtualHost>
1
Stephen Ostermiller

Vous devez configurer un enregistrement DNS sur le serveur - un enregistrement A utilisant l'adresse IP comme destination/cible.

Par exemple, dans votre fichier VirtualHost, vous devriez avoir quelque chose comme: -

<VirtualHost *:80>
ServerName www.domain.com
ServerAlias domain.com
DocumentRoot "/var/websites/domain/"
ErrorLog "/var/websites/domain/logs/error.log"
CustomLog "/var/websites/domain/logs/access.log"
</VirtualHost>

Évidemment, ce qui précède doit être modifié en fonction des chemins correspondants sur votre serveur, en fonction de la configuration (vous devrez peut-être créer les répertoires nécessaires s’ils n’existent pas déjà).

Ensuite, vous devrez redémarrer le serveur avec service httpd restart pour que les modifications prennent effet. Si cela diffère sur une instance EC2, je ne suis pas sûr, mais c'est ce qui est nécessaire sur un serveur Apache.

0
zigojacko