Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

luiscarlos5046

URL Rewrite

Recommended Posts

Olá Galera!

 

Tenho um problema com o URL Rewrite no IIS e com ASP Clássico.

 

Criei as regras no IIS, e para as páginas que chamo sem nenhum parâmetro, abre normal e carrega tudo certinho.

http://www.site.com.br/artigos

 

Já quando eu vou exibir um artigo com seu ID, só exibe na tela os textos e não renderiza as CSS nem imagens.

http://www.site.com.br/artigos/15

 

Acho que falta alguma coisa que ainda não sei usar no Web.config ou nas URLs do ASP.

 

Web.Config

<rule name="URL1" stopProcessing="true">
 <match url="^([^/]+)/?$" />
 <conditions>
 <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
 <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
 </conditions>
 <action type="Rewrite" url="index.asp?link={R:1}" />
</rule>

<rule name="URL2" stopProcessing="true">
 <match url="^([^/]+)/([0-9]+)/?$" />
 <conditions>
 <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
 <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
 </conditions>
 <action type="Rewrite" url="index.asp?link={R:1}&id={R:2}" />
</rule>

 

Eu tenho um arquivo INDEX.ASP... que nele eu carrego como include o ARTIGO e outros como ARTIGO-VIEW.

A URL sem o Rewrite fica assim: "index.asp?link=artigos-view&id=15"

Minhas URL nos arquivos eu fiz assim, não sei se é correto, me digam se está correto:

<link rel="stylesheet" type="text/css" href="./estilos/estilos.css" />
<script type="text/javascript" src="./js/jquery.js"></script>
<script type="text/javascript" src="./js/script.js"></script>

Todos esses links para a CSS e JQuery ficam todos no INDEX.ASP e nele eu chamo as paginas internas como include.

Já para os links no menu estão assim:

<a href="./">Início</a>
<a href="./sobre">O Laboratório</a>
<a href="./artigos">Artigos</a>

 

Ao que me parece que ao usar o Url.Rewrite, o caminho (url) aos arquivos CSS e JS são procurados dentro de uma subpasta como o /ARTIGO-view/ como se os arquivos estivessem detro. acho que tem alguma regra incorreta.

 

Me ajudem resolver esse dilema.

 

Obrigado!

 

Luis Carlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente utilizar o caminho absoluto para os arquivos (css e js) ou se as pastas "estilos" e "js" estiverem no mesmo nível que o "index.asp" apenas: "estilos/estilos.css" por exemplo.

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentei usar o caminho de todas as formas possíveis.

 

Mas acho q falta alguma regra no web.config para isso....

O iis insiste em definir "artigos" como pasta, qdo eu chamo a página artigos com um ID na frente.

 

A página é carregada todo o texto q fica no html, mas o CSS, JS e imagens que ficam em pastas, não é carregada pq o IIS insiste em procurar esses arquivos na pasta "artigos/estilos/" e assim por diante.

 

Qual forma correta para colocar os links nos HRefs??

Da forma que coloque está correta?

 

Luis Carlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ao meu ver o web.config nada influencia nessa questão dos arquivos CSS e JS.

Como sugeri utilize o caminho absoluto, ex:

Local: http://localhost/pasta/arquivo

Server: http://www.dominio.com.br/pasta/arquivo

 

Para caminhos relativos considerando que as pastas estão no mesmo nível do index.asp fica:

href="pasta/arquivo" ou,

href="/pasta/arquivo"

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Public2004!

 

Eu já coloquei o caminho absoluto como diz.

Com o caminho absoluto, os arquivos CSS e JS são carregados normalmente qdo eu chamo uma page com um id, já para as imagens e o menu não deu certo.

 

No menu como eu citei acima no modo que usei "./sobre", "./artigos", as urls mudam se eu chamar "/artigos/15" esse artigos aparece no lugar do ponto final nas urls, isso só aparece ao colocar o mouse sobre os links do menu, já no código fonte não aparece. A partir daí os links do menu não funcionam corretamente pq ficam assim "http://localhost/artigos/sobre", "http://localhost/artigos/artigos", "http://localhost/artigos/contato".

 

Por isso acho q o Web.Config está estranho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, já passei por isso.

 

A única solução que encontrei foi a comentada aí em cima, CAMINHO ABSOLUTO. Inclusive, se colocar links nas páginas internas, vai perceber que eles também estão com o mesmo problema.

 

Você vai ter que usar o caminho absoluto nas imagens e nos arquivos externos, js e css.

 

Para usar o caminho absoluto, costumo criar uma variável no início da página ou em um include e vou fazendo as chamadas com:

 

caminho_absoluto = "http://www.meusite.com.br/"

 

<img src"<%=caminho_absoluto%>images/imagem.jpg">

 

Assim seu problema é resolvido, MAS na minha opinião é gambiarra!

 

Esse erro ocorre, por causa da sua regra de reescrita de URL, mas não sei sinceramente como arrumar ;/

 

Se alguém tiver alguma solução para esse problema, nos avise.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então David, eu sei que o caminho absoluto iria resolver em partes o problema.

E para um caso que as páginas têm muitas imagens e muitos hrefs, fica muito massacrante essa gambiarra.

Para um site que já está pronto isso fica meio ruim né!

 

O que reparei tbm com o caminho absoluto para as CSS e JS é que as imagens que são definidas no CSS carregam normalmente.

 

Vou continuar pesquisando sobre isso, mas é impossível que não há solução mais amigável.

 

Luis Carlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem um artigo quie postei explicando e dando vários exemplos dá uma procurada no fórum

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rapaiz du Céu!

 

Onde tu achou isso David?

 

E não é que funcionou mesmo ?

Eu procurei no forum inteiro do IIS.net e não achei nada sobre isso.

 

http://forums.iis.net/1152.aspx?PageIndex=1&forumoptions=0:1:11:F:0

 

Por acaso essa é aquela regra canonical ou algo assim ?

 

Xanburzum... eu vi teu artigo no site do Baboo sobre isso.

 

Só que agora tem um probleminha nas regras pra aceitar caracteres como o hífem ou underline.. eu tenho alguns arquivos que usam ter hifens como artigos-view ou artigos_view

 

Eu tenho usado assim:

<match url="^([0-9a-z]+)/([0-9]+)/?$" />

 

Creio que se eu usar desta forma pode solucionar o problema:

<match url="^([^/]+)/([0-9]+)/?$" />

 

Ae David e Xanburzum, obrigado pela ajuda... já perdi vários dias procurando uma solução pra isto.

 

Depois eu volto a postar os resultados do site em que usei isto.

 

 

Luis Carlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

q bom que deu certo!

 

cara, sempre tive esse problema nos meus projetos usando o isapi, sempre foi dor de cabeça usar o caminho absoluto em tudo...

 

pra mim tb foi uma mão na roda. rsrsrs

 

sobre sua pergunta da url canônica, não tem muito à ver não, a canônica é para evitar duplicação de conteúdo nos mecanismos de busca.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Daniel, não tem colocar alguma regra no web.config pra isso não?

 

<base href="http://www.seusite.com.br"/>

 

Eu sou leigo em web.config e rodei aquele forum do IIS e não achei nada sobre esse BASE HREF....

 

Se tiver como colocar essa regra no web.config seria melhor né?

 

Luis Carlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

já muitos post sobre dúvida em URL rewrite/ISAPI, na verdade não é difícil mas tem suas dificuldades, se quiser acessar meu artigo sobre ISAPI/Rewrite ele te dá vários exemplos de implementações, e sempre estou colhendo informações para atualizá-lo , até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.