Ir para conteúdo

Arquivado

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

T13

2 ou mais RULES no ASP + WEB.CONFIG

Recommended Posts

Galera, tudo jóia?

 

Estou utilizando Web.Config + ASP CLASSICO para criação de urls amigáveis.

Em minha página inicial, tenho 2 URLs com query.string que preciso tornar amigável e, consigo fazer isso já com o web.config, porém, apenas um dos links está funcionando com a rule que tenho. O outro está direcionando para a mesma página do primeiro link.

 

Exemplo: Tenho em minha página inicial duas chamadas, sendo:

1 - PRODUTOS "produtos.asp?id=3"  (URL amigável funcionando lisa, convertendo para "meusite.com/3")

2 - LOJAS "lojas.asp?idloja=4" (URL redirecionando para a URL de cima "meusite.com/3", ou seja, para a página de PRODUTOS e não para a de LOJAS)

 

Como faço para que cada link seja apontado para a respectiva página? PRODUTOS para PRODUTOS e LOJAS para LOJAS??

Obrigado.

 

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="lojas" stopProcessing="true">
<conditions>
  <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
  <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<match url="^(.*)$" ignoreCase="true" />
<action type="Rewrite" url="lojas.asp?idloja={R:1}" appendQueryString="true" />
</rule>

<rule name="produtos" stopProcessing="true">
<conditions>
  <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
  <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<match url="^(.*)$" ignoreCase="true" />
<action type="Rewrite" url="produtos.asp?id={R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@T13 Você vai precisar de mais um identificador na url... Do jeito que está vai gerar conflito pois tanto a query "id" quanto "idloja" estão apontando para a raiz...

Seria algo como:

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

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Public2004 Obrigado por auxiliar na questão.

 

Tentei a utilização desses parâmetros porém as páginas não estão sendo exibidas. Pesquisei diversos métodos de utilizar em várias páginas mas não estou conseguindo com nenhuma... Todas apontam para a página da primeira rule. 

Ambas as páginas estão na pasta raíz do site e de certa forma, deveriam ser exibidas como, por exemplo:

 

- meusite.com/lojas/3

ou

-  meusite.com/produtos-3

ou

meusite.com/lojas-3.html

 

De fato queria apenas que as rules dessem certo, não importando muito o tipo da reescrita final.

Poderia me dar mais alguma sugestão? 

Compartilhar este post


Link para o post
Compartilhar em outros sites

As regras que sugeri deveriam funcionar, na primeira regra a url ficaria: "lojas/valor_idloja" e na segunda: "produtos/valor_id".

Mostre como está o seu "web.config" completo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso, está funcionando sim, porém, sempre redirecionando para o link da primeira rule "lojas.asp".

 

Então, quando clico no link referente à página produtos, ele está redirecionando também para a página de lojas.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rule name="lojas" stopProcessing="true">
<conditions>
  <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
  <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<match url="^lojas/([^/]+)/?$" ignoreCase="true" />
<action type="Rewrite" url="lojas.asp?idloja={R:1}" appendQueryString="true" />
</rule>
<rule name="produtos" stopProcessing="true">
<conditions>
  <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
  <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<match url="^produtos/([^/]+)/?$" ignoreCase="true" />
<action type="Rewrite" url="produtos.asp?id={R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@T13 Acrescentei a regra para ocultar extensão dos arquivos, veja se agora funciona:

 

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rule name="lojas" stopProcessing="true">
<conditions>
  <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
  <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<match url="^lojas/([^/]+)/?$" ignoreCase="true" />
<action type="Rewrite" url="lojas.asp?idloja={R:1}" appendQueryString="true" />
</rule>
<rule name="produtos" stopProcessing="true">
<conditions>
  <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
  <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<match url="^produtos/([^/]+)/?$" ignoreCase="true" />
<action type="Rewrite" url="produtos.asp?id={R:1}" appendQueryString="true" />
</rule>
<rule name="Hide_Ext" 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="{R:1}.asp" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe uma forma de fazer URL amigável usando erro 404, fica igual ao " rewrite ".

Você cria uma página para o Erro 404 e dentro dela coloca o código abaixo, e ajuste para o seu domínio.

strQuery = replace(Request.ServerVariables("QUERY_STRING"),"'","1")

' sem o www
var_link1 = strQuery
var_link1 = replace(var_link1,"404;http://seu_site.com:80/","")

'esse é com www na frente
var_link2 = strQuery
var_link2 = replace(var_link2,"404;http://www.seu_site.com:80/","")


if left(var_link1,3) <> "404" then
link_final = var_link1
end if
if left(var_link2,3) <> "404" then
link_final = var_link2
end if


var_teste = "principal_loja.asp"


sql = ("select * from loja_virtual where url_amigavel = '"&link_final&"' ")
Set tudo_url = db.execute(sql)

if not tudo_url.eof then 
session("url_amigavel") = link_final
	Response.Status="200 OK"

	Server.Transfer ""&var_teste

Else


	if strPage2 = "bla" then
	Response.Status="200 OK"
	Server.Transfer "pagina_qualquer/default.asp"
	end if
	

	'Put your normal error page here
	Server.Transfer("/pagina_inexistente.asp")
	
End If

Basta ir adaptando.

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Public2004
Meu caro, sua solução funcionou perfeitamente. 
Eu já havia até desistido de tentar quando lembrei que tinha perguntado aqui também.

Muito obrigado por ter cedido um pouco do seu tempo para ajudar com essa questão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Nightmare SEP
      Boa tarde.
       
      Preciso fazer as URL Amigáveis em um site. Na verdade eu nunca soube como configurar, e agora tenho que fazer em um servidor Windows, editando no arquivo web.config.
      Procurei bastante mas não consegui encontrar um material que me ajude. Eu sou totalmente leigo nesse tipo de configuração.
       
      Venho pedir a ajuda de vocês para conseguir fazer essa configuração ou se alguém tem um material bom para iniciante.
       
      Eu tenho dois tipos de links apenas no meu site, e como gostaria de deixar:
      www.dominio.com.br/contato.php     =====>     www.dominio.com.br/contato       
      www.dominio.com.br/ace-ferragens.php?produto=1000     =====>     www.dominio.com.br/ferragens/1000
      Sendo que este 1000 é passado dinamicamente via PHP.
       
      Tenho o caso também de eu enviar uma mensagem via GET para mostrar na tela, e também gostaria de deixar de maneira amigável
      www.dominio.com.br/contato.php?msg=Teste     =====>     www.dominio.com.br/contato 
       
      Desde já agradeço.
    • Por Cesar Masserati Procopio
      Pessoal, venho pedir mais uma ajuda!
      Realizei o desenvolvimento de um Site em um servidor local com WAMPSERVER.
      Até ai blz, o problema está quando realizei a hospedagem do site, pois fiz website com URL AMIGAVEL e criei um arquivo .htaccess mas quando navego no site ocorre erros de "PAGE NOT FOUNO" ou erros "500 Erro Servidor Interno".
      Em pesquisa descobri que meu servidor de Hospedagem trabalha com Servidores Windows e que o .htaccess não funciona direito em ambiente Windows!
      Alguém sabe como posso configurar o .htaccess funcionar em Meu Servidor de Hospedagem?
      Segue meu .HTACCESS
       

    • Por MarKteus
      Alguém sabe como usar apenas uma string de conexão para acessar dois bancos ?

      Exemplo:
      connectionString="data source=*****;initial catalog=BancoONE, BancoTWO;persist security info=True;user id=id****;password=*******;MultipleActiveResultSets=True" providerName="System.Data.EntityClient" />


    • Por Fabricio F. Vieira
      Boa tarde Pessoal,
      tenho vários projetos Asp.Net MVC e dentro de cada projeto tenho uma conexão com o banco através da connectionstring do web.config. O que eu gostaria de fazer seria deixar uma connection string unica e todos os projetos direcionados a ela, se meu banco de dados mudar, ou a conexão, ou usuário e senha, eu teria que mudar apenas ela e não todos os webconfigs de cada projeto.
      Existe uma melhor maneira de centralizar essa informação num servidor pra todos os meus projetos?
       
      Agradeço desde de já!
    • Por FelipeMussolini
      Estou com uma duvida criei um site com ancoras mais gostaria de transformar os links em url amigável com o web.config do iis mais não esta dando muito certo há alguma maneira de fazer isso , Segue abaixo parte do meu código.

      <rule name="Imported Rule 1" stopProcessing="true"> <match url="^bagel/home/?$" /> <action type="Rewrite" url="/bagel/index.html#HOME" appendQueryString="false" /> </rule> <rule name="Imported Rule 2" stopProcessing="true"> <match url="^bagel/grupo/?$" /> <action type="Rewrite" url="/bagel/index.html#GRUPO" appendQueryString="false" /> </rule> <rule name="Imported Rule 3" stopProcessing="true"> <match url="^bagel/servicos/?$" /> <action type="Rewrite" url="/bagel/index.html#SERVICOS" appendQueryString="false" /> </rule> <rule name="Imported Rule 5" stopProcessing="true"> <match url="^bagel/downloads/?$" /> <action type="Rewrite" url="/bagel/index.html#DOWNLOAD" appendQueryString="false" />
×

Informação importante

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