web-dev-qa-db-fra.com

Comment masquer le port dans mon URL?

Qu'est-ce que je rate? Si je vais sur mysite.com:9999 je récupère mon site, mais pas mysite.com Évidemment, les utilisateurs ne devraient pas avoir besoin de taper le port, alors que dois-je faire? Je n'essaie pas vraiment de cacher le port au lieu de demander à l'utilisateur de le saisir dans l'URL. Est-ce un paramètre de configuration Apache quelque part? Devrais-je regarder httpd.config, la configuration de conteneur ou ailleurs? C'est un hôte virtuel sur le serveur Apache. Toutes les suggestions sont appréciées.

Edit - Les blocs de l'hôte virtuel qui fonctionnent dans virtualhosts.conf se présentent comme suit:

Au début, les entrées de l'hôte virtuel portent le nom suivant:

NameVirtualHost *:700 
NameVirtualHost *:710
...
NameVirtualHost *:760

Ci-dessous le bloc de travail pour la version http ressemble à ceci:

<VirtualHost *:710>
     ServerName webdev.url.com
     ServerAdmin [email protected]

     # Comment out when OC4J instance is down for maintenance:
     <IfModule mod_oc4j.c>
         Oc4jMount 
     </IfModule>

     # Uncomment when OC4J instance is down for maintenance:
     # DocumentRoot "/org/dev"

     # - Restrict 'Cross-Site-Tracking' or XST
     RewriteEngine on
     RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
     RewriteRule .* - [F]

     <IfModule mod_dir.c>
         DirectoryIndex index.jsp
     </IfModule>
         ErrorLog "|/opt/app/Oracle/product/AS10.1.2/Apache/Apache/bin/rotatelogs/logs/dev_error_log 440"
             CustomLog "|/opt/app/Oracle/product/AS10.1.2/Apache/Apache/bin/rotatelogs/logs/dev_access_log 440" common


     <Location "/pls/dev">
         Order deny,allow
         Deny from all
         Allow from ####internal ip addresses####
     </Location>

 </VirtualHost>

Le nouveau qui nécessite la spécification du port ressemble à ceci:

## - for Mobile 
 <VirtualHost *:770>
     ServerName mdev.url.com
     ServerAdmin [email protected]

     # Comment out when OC4J instance is down for maintenance:
     <IfModule mod_oc4j.c>
         Oc4jMount / msitedev
     </IfModule>

     # - Restrict 'Cross-Site-Tracking' or XST
     RewriteEngine on
     RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
     RewriteRule .* - [F]

     <IfModule mod_dir.c>
         DirectoryIndex m.jsp
     </IfModule>

     ErrorLog "|/opt/app/Oracle/product/AS10.1.2/Apache/Apache/bin/rotatelogs/logs/mdev_error_log 440"
     CustomLog "|/opt/app/Oracle/product/AS10.1.2/Apache/Apache/bin/rotatelogs/logs/mdev_access_log 440" common


    # <Location "/org/dev">
    #     Order deny,allow
    #     Deny from all
    #     Allow from ####
    # </Location>


 </VirtualHost>

Encore une fois, j'essaie simplement de déterminer si quelque chose supprime le besoin d'entrer le numéro de port (par exemple 710) dans l'URL. Après examen, il ne semble y avoir aucun fichier htaccess où que ce soit.

6
Dallas

Voici le manuel pour enregistrements DNS SRV (RFC 2782) qui peut être utilisé pour modifier le port par défaut en fonction de ce que vous utilisez réellement:

_http._tcp.example.com. IN      SRV 0    5      80   www.example.com.

où l'avant-dernier champ est le port, qui peut avoir une valeur réelle. Les enregistrements DNS SRV peuvent redéfinir le port http par défaut pour le domaine ou uniquement pour (certains) hôtes au sein du domaine.

5
Lazy Badger

Lorsque vous tapez l'URL dans un navigateur Web, http://www.foo.com, il tentera toujours de se connecter sur le port 80.

Ce n'est pas tellement que le port est caché , mais plutôt que est supposé , puisque le port 80 est le port par défaut pour HTTP demandes.

Sur la même ligne, si vous accédez à https://www.foo.com, il tentera toujours de se connecter sur le port 443, sauf si vous spécifiez un autre port (https://www.foo.com:8080). Le port 443 est le port par défaut pour les demandes SSL/TLS.

Sauf si vous avez une raison impérieuse (par exemple, si vous exécutez 2 services Web [par exemple, Apache et IIS] simultanément sur la machine), il peut être préférable de changer simplement votre nouvel hôte virtuel sur le port 80. J'ai vu sur SO que vous avez posé une question similaire . Si vous essayez de rediriger des clients mobiles vers un autre site (ou votre application, par exemple), vous pouvez utiliser mod_rewrite en fonction de l'agent utilisateur.

Par exemple:

<VirtualHost *:80>
DocumentRoot /www/mainwebsite
ServerName www.foo.com 
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "Android|blackberry|googlebot-mobile|iemobile|ipad|iphone|iPod|opera mobile|palmos|webos" [NC]
RewriteRule ^$ http://m.foo.com/ [L,R=302]

</VirtualHost>

<VirtualHost *:80>
DocumentRoot /www/mobileapp
ServerName m.foo.com
# You might check for the USER_AGENT here and redirect to the main site if not found
</VirtualHost>

Il est tard et ce qui précède est peut-être un peu décalé - si cela vous aide, peut-être que quelqu'un pourra le modifier pour qu'il soit plus correct.

15
Nathan

Le protocole HTTP utilise le port 80 par défaut. Si vous configurez votre serveur Web pour utiliser un port non standard, vous devez spécifier le port dans l'URL. Il n'y a aucun moyen de cacher ça.

Dans Apache, vous pouvez définir le port d'écoute dans httpd.conf, par exemple:

Listen 127.0.0.1:80

Cela peut toutefois être annulé dans la configuration vhost, par exemple:

<VirtualHost *:80>
3
Lèse majesté

Je réalise seulement maintenant que je n'ai jamais posté la réponse spécifique à mon problème.

En fin de compte, nous avons dû ajouter des détails à webcache.xml pour permettre à l'URL de fonctionner sans port spécifié dans l'URL.

1
Dallas