Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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
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.
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.
Fiquei confuso com sua explicação...
Porque não utiliza o caminho absoluto em todos os links então?
Att.
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.
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
tem um artigo quie postei explicando e dando vários exemplos dá uma procurada no fórum
Luis, logo abaixo do seu <head>, antes do css e js, adicione:
**<base href="**[http://www.seusite.com.br"/>](http://www.seusite.com.br)
Aqui deu certo.
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
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.
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
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.
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.