Como faço para parar mod_rewrite de append links para url?

Espero que a resposta seja algo tão simples que vou querer chorar, mas não consigo descobrir. Eu sou novo no mod_rewrite.

Eu queria mudar meus links de coisas como domain.com/?p=about para domain.com/about* / * (com a barra diagonal) e funciona bem, mas sempre que eu passar para um link, ele acrescenta o novo link para a parte de trás da url. Por exemplo, eu tenho um link sobre e um contato. Se eu clicar sobre ele navega para domain.com/https://stackoverflow.com/questions/13037561/how-do-i-stop-mod-rewrite-from-appending-links-to-url/about/, então, se eu clicar em contato, ele navega para domain.com/https://stackoverflow.com/questions/13037561/how-do-i-stop-mod-rewrite-from-appending-links-to-url/about/https://stackoverflow.com/questions/13037561/how-do-i-stop-mod-rewrite-from-appending-links-to-url/contact/ e continuará adicionando os links para o final da url. Se eu estiver no domínio.com e clique em um link (sobre, neste caso), ele irá para domain.com/https://stackoverflow.com/questions/13037561/how-do-i-stop-mod-rewrite-from-appending-links-to-url/about/ e se eu clicar em cerca de mais 4 vezes, minha barra de endereços vai dizer “domain.com/ sobre / sobre / sobre / sobre / sobre / “Reproduzi isso em um exemplo muito simples abaixo, o que estou fazendo de errado?

.htaccess

RewriteEngine On RewriteRule ([a-zA-Z0-9]+)/$ index.php?p=$1 

index.php

 about | contact

Obrigado pela ajuda!

editar: Funciona bem se eu usar um caminho absoluto, mas eu prefiro não se eu não tiver absolutamente que fazer.

edit2: adicionando

 RewriteBase / 

quebra os links. Eles parecem estar indo para domain.com/https://stackoverflow.com/questions/13037561/how-do-i-stop-mod-rewrite-from-appending-links-to-url/about/ e … / contact /, mas eu recebo um 404 – Estou assumindo que a regra que usei é de alguma forma incompatível com a maneira como eu estou fazendo minha binding, e é por isso que Eu incluí index.php também.

Você está definindo todos os seus links em HTML em relação ao caminho atual.

Você precisará alterar seus links de forma que:

 https://stackoverflow.com/questions/13037561/how-do-i-stop-mod-rewrite-from-appending-links-to-url/about | contact

torna-se (observe a liderança / nas URLs):

 https://stackoverflow.com/questions/13037561/how-do-i-stop-mod-rewrite-from-appending-links-to-url/about | contact

Quando você está em um site da página / site.com/https://stackoverflow.com/questions/13037561/how-do-i-stop-mod-rewrite-from-appending-links-to-url/about/us um link como é resolvido pelo navegador para ser site.com/https://stackoverflow.com/questions/13037561/how-do-i-stop-mod-rewrite-from-appending-links-to-url/about/us/home .

A solução é mudar todos os seus links, imagens, folhas de estilo e javascripts para usar caminhos absolutos em seus URLs, e não relativos, como você tem agora.

EDITAR: acabei de notar sua edição. Você realmente deve usar caminhos absolutos, não relativos. Se você quiser manter os URLs relativos, então você terá que usar algo como em todas as suas páginas.

Tudo o que fizer, clicando em https://stackoverflow.com/questions/13037561/how-do-i-stop-mod-rewrite-from-appending-links-to-url/about appendá https://stackoverflow.com/questions/13037561/how-do-i-stop-mod-rewrite-from-appending-links-to-url/about/ no final do URL. É assim que funcionam os links relativos.

Suas escolhas são, por ordem de sensibilidade:

  1. Basta remover essa barra final. Essa é a causa do seu problema:

     https://stackoverflow.com/questions/13037561/how-do-i-stop-mod-rewrite-from-appending-links-to-url/about 

    Um link relativo replaceá a última seção do caminho (após o último / ) com seu novo valor.

  2. Adicione um … ../ . Isso é um pouco complicado, mas isso permite que você mantenha essa valiosa barra

     https://stackoverflow.com/questions/13037561/how-do-i-stop-mod-rewrite-from-appending-links-to-url/about 
  3. Faça um redirecionamento 301 de /https://stackoverflow.com/questions/13037561/how-do-i-stop-mod-rewrite-from-appending-links-to-url/about/https://stackoverflow.com/questions/13037561/how-do-i-stop-mod-rewrite-from-appending-links-to-url/about para /https://stackoverflow.com/questions/13037561/how-do-i-stop-mod-rewrite-from-appending-links-to-url/about . Isso fará com que a barra de endereço mude de /https://stackoverflow.com/questions/13037561/how-do-i-stop-mod-rewrite-from-appending-links-to-url/about para /https://stackoverflow.com/questions/13037561/how-do-i-stop-mod-rewrite-from-appending-links-to-url/about/https://stackoverflow.com/questions/13037561/how-do-i-stop-mod-rewrite-from-appending-links-to-url/about e de volta novamente.

Talvez um pouco tarde demais para responder, mas adicionar essa linha na seção faria o truque:

  or