Existe uma maneira sem o Javascript / script do lado do servidor vincular a um número de porta diferente na mesma caixa, se eu não souber o nome do host?
por exemplo:
<a href=":8080">Look at the other port</a>
(Este exemplo não funciona, pois tratará apenas: 8080 como uma string para a qual desejo navegar)
$http_host
var funciona, por exemplo:return 200 '<html><body><iframe id="ic" src="http://$http_host:2812/"></iframe></body></html>
em um/etc/nginx/conf.d/strange.conf
arquivo.Respostas:
Seria bom se isso funcionasse, e não vejo por que não, porque
:
é um caractere reservado para a separação de portas dentro do componente URI, para que o navegador possa interpretá-lo realisticamente como uma porta relativa a este URL, mas infelizmente não ' te não há como fazer isso.Portanto, você precisará de Javascript para fazer isso;
Testado no Firefox 4
Violino: http://jsfiddle.net/JtF39/79/
Atualização : Corrigido o erro ao anexar a porta ao final da URL e também adicionava suporte para URLs relativas e absolutas a serem anexadas ao final:
fonte
http://myhost:8080/:8080
comhref=":8080"
. Você pode adicionar esta linha em `target.port = port [1];` para corrigir isso.target.href = target.href.replace("/:"+target.port, "");
(Não é uma solução perfeita, já que é um achado / substituir, mas é bom para casos simples onde você não está preocupado com a porta-string estar na URL.)Que tal estes:
Modifique o número da porta ao clicar:
No entanto, se você passar o mouse sobre o link, ele não mostrará o link com o novo número da porta incluído. Não é até você clicar nele que ele adiciona o número da porta. Além disso, se o usuário clicar com o botão direito do mouse no link e copiar "Local do link", ele obterá o URL não modificado sem o número da porta. Então, isso não é o ideal.
Aqui está um método para alterar o URL logo após o carregamento da página. Passar o mouse sobre o link ou fazer "Copiar local do link" obterá o URL atualizado com o número da porta:
fonte
<a href="#" onclick="javascript:event.target.port=8888">port 8888</a>
tecnicamente não deve funcionar, de acordo com as especificações da w3 .event.target
deveria serreadonly
. Mas parece funcionar para mim no Chrome e Firefox!Você pode fazer isso facilmente usando document.write e o URL será exibido corretamente quando você passar o mouse sobre ele. Você também não precisa de um ID exclusivo usando esse método e ele funciona com Chrome, FireFox e IE. Como estamos referenciando apenas variáveis e não carregando scripts externos, o uso de document.write aqui não afetará o desempenho do carregamento da página.
fonte
window.location.protocol
parte, apenas começando com'//'
.document.write
é praticamente universalmente não recomendado hoje em dia. Seria melhor fazer algo comomyElement.innerHTML = '...'
Modifique o número da porta na passagem do mouse:
Esta é uma melhoria do https://stackoverflow.com/a/13522508/1497139, que não tem a desvantagem de não mostrar o link corretamente.
fonte
Sem JavaScript, você precisará confiar em alguns scripts do lado do servidor. Por exemplo, se você estiver usando ASP, algo como ...
Deveria trabalhar. No entanto, o formato exato dependerá da tecnologia que você está usando.
fonte
Depois de lutar com isso, descobri que SERVER_NAME é uma variável reservada. Portanto, se você estiver na página (www.example.com:8080), poderá eliminar o 8080 e chamar outra porta. Por exemplo, esse código modificado funcionou para mim e me move de qualquer porta base para a porta 8069 (substitua sua porta conforme necessário)
fonte
<a href="https://<?php print $_SERVER{'SERVER_NAME'}; ?>:8069">
É melhor obter o URL das variáveis do servidor:
fonte
Não há necessidade de javascript complicado: basta inserir um nó de script após sua âncora, depois obter o nó em javascript e modificar sua propriedade href com o método window.location.origin .
A propriedade id deve ter uma página exclusiva, portanto, convém usar outro método para recuperar objetos do nó.
Testado com apache e Firefox no Linux.
fonte
http//localhost:8081
, observe os dois pontos ausentes. Acabei de remover completamente a parte do protocolo, pois o Chrome assumiu o http de qualquer maneira.window.location.hostname
. Veja developer.mozilla.org/pt-BR/docs/Web/API/LocationEsta solução parece mais limpa para mim
fonte
Baseado na resposta de Gary Hole , mas altera os URLs no carregamento da página em vez de clicar.
Eu queria mostrar o URL usando css:
Então, eu precisava que o href da âncora fosse convertido para conter o URL real que seria visitado.
Chame a função acima no carregamento da página.
ou em uma linha:
(Estou usando em
for
vez de,forEach
portanto, funciona no IE7.)fonte
Nenhuma das respostas que eu olhei (e direi que não li todas) ajusta o URL para que um clique do meio ou "abrir em nova guia" funcione corretamente - apenas um clique regular para seguir o link. Peguei emprestado a resposta de Gary Greene e, em vez de ajustar o URL on-the-fly, podemos ajustá-lo quando a página carregar:
fonte