enlazar a un puerto local en html [Solucionado]

Hola a todos, estoy montando un servidor casero y no consigo enlazar a un puerto con lenguaje html de manera que enlace correctamente tanto para la red local como para internet.

El servidor es de momento muy simple, La cosa es muy simple, una página web muy simple con un par de enlaces y fotos.

El servidor web es apache2, estoy haciendo pruebas para hacer streaming de la música. Bien, el servicio de streaming lo hago con gnump3d y escucha en el puerto 8888. La pagina web tiene acceso desde la red internta como desde internet, para ello utilizo un dominio no-ip.

en la red interna, accediendo con la ip local del servidor al perto 8888 funciona bien:

http://192.168.4.70:8888

desde internet con el dominio no-ip tambien

http://dominio.no-ip:8888

bien, la pagina web de apache, tiene un enlace a ese puerto:

<a href="http://192.168.4.70:8888">Musica</a>

Y así puesto funciona muy bien desde la red local, pero evidentemente no desde internet.

<a href="http://dominio.no-ip:8888">Musica</a>

Así funciona bien desde todas partes, pero claro, desde el cliente de la red local, accede a internet para volver al servidor.

He probado muchas cosas

<a href=":8888">Musica</a>
<a href="/:8888">Musica</a>
<a href="localhost:8888">Musica</a>

Y no consigo encontrar la manera de redirigir simplemente al puerto sin tener que poner una dirección completa para que la red interna no necesite salir a internet y la red externa pueda acceder.

Para aquellos que sepáis html os será evidente por qué no funcionan las pruebas de los enlaces, pero es que no he encontrado la manera de hacer lo que quiero y solo me quedaba la opción de experimentar.
shamed

Un saludo a todos.

Se me ocurre que pudieras establecer una página index o principal para cada tipo de acceso, externo e interno. Y que el enlace a Música sea distinto para cada una de ellas; <a href="http://192.168.4.70:8888">Musica</a> para el acceso interno y <a href="http://dominio.no-ip:8888">Musica</a> para el externo.

Saludos wink

¿Por qué no dejas los 2 enlaces? Por ejemplo:

<a href="http://192.168.4.70:8888">Escuchar Música (localmente)</a>

y

<a href="http://dominio.no-ip:8888">Escuchar Música (desde la Internet)</a>

y haces clic en el que corresponda dependiendo de donde estés.

shaola escribió:

[...] He probado muchas cosas

<a href=":8888">Musica</a>
<a href="/:8888">Musica</a>
<a href="localhost:8888">Musica</a>

[...]

Ninguna de esas te va a servir porque necesitas especificar el protocolo del enlace, que en este caso es HTTP. La nomenclatura para el anclaje (anchor) es:

<a href="protocolo://servidor:puerto/">texto</a>

Por lo tanto es correcto que se quede así:

<a href="http://dominio.no-ip.com:8888">Musica</a>
shaola escribió:

[...] no consigo encontrar la manera de redirigir simplemente al puerto sin tener que poner una dirección completa para que la red interna no necesite salir a internet y la red externa pueda acceder.[...]

Se me ocurre que podrías crear una entrada en tu archivo /etc/hosts , para que cuando desde la LAN hagas clic en tu enlace la conexión no salga a Internet, sino que se redirija al equipo dentro de la misma LAN:

dominio.no-ip.com     192.168.4.70

De esa manera, cuando hagas clic en el enlace http://dominio.no-ip.com:8888/ la conexión no saldrá a la Internet sino que la conexión se hará localmente.

Saludos,
Sidd.


EDITO:
es al revés la información en el archivo /etc/hosts . Es que no tengo ni Kubuntu ni Debian a la mano, estoy viendo el archivo de Windows XP y me di cuenta de mi error. Lo correcto sería:

192.168.4.70           dominio.no-ip.com

pues la opción de añadir el host no se me había ocurrido.

También puedo añadir dos enlaces como habéis sugerido. Y lo de añadir dos pçaginas index no acabo de entenderlo por completo.

Pero... ¿entonces mediante lenguaje html no se puede dirigir a un puerto directamente?

un detalle, cuando pongo este enlace:

<a href=":8888">Musica</a>

entro en la pagina:

http://dominio-no-ip

si pincho en el enlace, el navegador me dirige a

http://dominio-no-ip/:8888

y claro, no funciona, el link correcto sería:

http://dominio-no-ip:8888

Solo le sobra el / por eso pensaba que habría alguna posibilidad.

En fin, gracias de todas formas por el intento.

jajajjaja yo te iba a contestar shaola pero justo me tuve que ir xD

Te iba sugerir que porque no usabas un script en JavaScript o en PHP que mire sobre que IP se esta abriendo la pagina y dependiendo la IP mostrar el correspondiente link xD

Tuxerito escribió:

jajajjaja yo te iba a contestar shaola pero justo me tuve que ir xD

Te iba sugerir que porque no usabas un script en JavaScript o en PHP que mire sobre que IP se esta abriendo la pagina y dependiendo la IP mostrar el correspondiente link xD

uff, si apenas estoy enpezando con html ya quieres meterme con javascript o php? jajaja. Con el tiempo tux... con el tiempo

Deduzco que no hay forma de hacerlo con html no?

El siguiente código no ¿funciona?:

<a href=":8888/">Musica</a>
scs_calleros escribió:

El siguiente código no ¿funciona?:

<a href=":8888/">Musica</a>

no, con eso mi navegador se dirige a

http://dominio.no-ip/:8888 

cuando para que funcione hay que poner

http://dominio.no-ip:8888 

es el pequeño detalle de la / la que fastidia todo.

typeo

<html>
<head>
  <script type="text/javascript">
   var miurl = "";
   var urlorigen = document.location+"";
   urlorigen = urlorigen.substring(0,19)
   if(urlorigen == "http://192.168.4.70")
   miurl = '<a href="http://192.168.4.70:8888">Musica</a>';
   else
   miurl = '<a href="http://dominio.no-ip:8888">Musica</a>';
  </script>
</head>
<body>
  <script>document.write(miurl)</script>
</body>
</html>

interesante tux, pero eso no es html no? es javascript? de momento ya lo he probado desde internet, y funciona, pero no he podido probarlo desde la red local. ¿el if url tiene que ser la ip del servidor? o la ip del cliente de la red local? se puede poner un rango de ips? como por ejemplo 192.168.4.0 para que reconozca todas?

Es JavaScript xD

Si se puede dejar por ejemplo para que la condicion compares hasta 192.168.4

Habria que cambiar

urlorigen = urlorigen.substring(0,19)
if(urlorigen == "http://192.168.4.70")

Por
urlorigen = urlorigen.substring(0,16)
if(urlorigen == "http://192.168.4")

Con eso te servira localmente y desde internet, si es local carga localmente el streaming.