¿Hay alguna forma sin Javascript / scripting del lado del servidor para vincular a un número de puerto diferente en el mismo cuadro, si no sé el nombre de host?
p.ej:
<a href=":8080">Look at the other port</a>
(Este ejemplo no funciona ya que solo tratará: 8080 como una cadena a la que quiero navegar)
$http_host
var funciona, por ejemplo,return 200 '<html><body><iframe id="ic" src="http://$http_host:2812/"></iframe></body></html>
es decir, en un/etc/nginx/conf.d/strange.conf
archivo.Respuestas:
Sería bueno si esto pudiera funcionar, y no veo por qué no porque
:
es un carácter reservado para la separación de puertos dentro del componente URI, por lo que el navegador podría interpretarlo de manera realista como un puerto relativo a esta URL, pero desafortunadamente no ty no hay forma de que lo haga.Por lo tanto, necesitará Javascript para hacer esto;
Probado en Firefox 4
Violín: http://jsfiddle.net/JtF39/79/
Actualización : Se corrigió un error para agregar el puerto al final de la URL y también se agregó soporte para las URL relativas y absolutas que se agregarán al final:
fuente
http://myhost:8080/:8080
parahref=":8080"
. Puede agregar esta línea en `target.port = port [1];` para arreglar esto.target.href = target.href.replace("/:"+target.port, "");
(No es una solución perfecta, ya que es un hallazgo / reemplazar, pero es bueno para casos sencillos en los que no está preocupado por el puerto de cuerdas estar en la URL.)Que tal esto:
Modifique el número de puerto al hacer clic:
Sin embargo, si pasa el mouse sobre el enlace, no muestra el enlace con el nuevo número de puerto incluido. No es hasta que hace clic en él que agrega el número de puerto. Además, si el usuario hace clic con el botón derecho en el enlace y hace "Copiar ubicación del enlace", obtiene la URL sin modificar sin el número de puerto. Entonces esto no es ideal.
Aquí hay un método para cambiar la URL justo después de que se cargue la página, por lo que al pasar el mouse sobre el enlace o al hacer "Copiar ubicación del enlace" obtendrá la URL actualizada con el número de puerto:
fuente
<a href="#" onclick="javascript:event.target.port=8888">port 8888</a>
técnicamente no debería funcionar, de acuerdo con las especificaciones de w3 .event.target
se supone que esreadonly
. ¡Pero parece funcionar para mí en Chrome y Firefox!Puedes hacerlo fácilmente usando document.write y la URL se mostrará correctamente cuando pases el mouse sobre ella. Tampoco necesita una identificación única con este método y funciona con Chrome, Firefox e IE. Dado que solo hacemos referencia a variables y no cargamos ningún script externo, el uso de document.write aquí no afectará el rendimiento de carga de la página.
fuente
window.location.protocol
parte, solo comience con'//'
.document.write
hoy en día no se recomienda universalmente. Sería mejor hacer algo comomyElement.innerHTML = '...'
Modifique el número de puerto al pasar el mouse:
Esta es una mejora de https://stackoverflow.com/a/13522508/1497139 que no tiene el inconveniente de no mostrar el enlace correctamente.
fuente
Sin JavaScript, tendrá que confiar en algunos scripts del lado del servidor. Por ejemplo, si está utilizando ASP, algo así como ...
Deberia trabajar. Sin embargo, el formato exacto dependerá de la tecnología que esté utilizando.
fuente
Después de luchar con esto, descubrí que SERVER_NAME es una variable reservada. Entonces, si está en la página (www.example.com:8080), debería poder soltar el 8080 e invocar otro puerto. Por ejemplo, este código modificado me funcionó y me mueve de cualquier puerto base al puerto 8069 (reemplace su puerto según sea necesario)
fuente
<a href="https://<?php print $_SERVER{'SERVER_NAME'}; ?>:8069">
Es mejor obtener la URL de las variables del servidor:
fuente
No necesita javascript complicado: simplemente inserte un nodo de script después de su ancla, luego obtenga el nodo en javascript y modifique su propiedad href con el método window.location.origin .
La propiedad id debe ser única en toda la página, por lo que es posible que desee utilizar otro método para recuperar objetos de nodo.
Probado con apache y Firefox en Linux.
fuente
http//localhost:8081
, tenga en cuenta los dos puntos faltantes. Acabo de eliminar la parte del protocolo por completo ya que Chrome asumió http de todos modos.window.location.hostname
en su lugar. Ver developer.mozilla.org/en-US/docs/Web/API/LocationEsta solución me parece más limpia
fuente
Basado en la respuesta de Gary Hole , pero cambia las URL en la carga de la página en lugar de hacer clic.
Quería mostrar la url usando css:
Entonces necesitaba que la href del ancla se convirtiera para contener la url real que se visitaría.
Llame a la función anterior al cargar la página.
o en una línea:
(Estoy usando en
for
lugar deforEach
por lo que funciona en IE7).fuente
Ninguna de las respuestas que vi (y diré, no las leí todas) ajusta la URL de manera que un clic central o "abrir en una pestaña nueva" funcione correctamente, solo un clic normal para seguir el enlace. Tomé prestado la respuesta de Gary Greene, y en lugar de ajustar la URL sobre la marcha, podemos ajustarla cuando se carga la página:
fuente