Pergunta

Eu estou tentando usar o Isapi do IIS Reescrever para fazer o seguinte...

Eu preciso de seo-friendly URLs (silenciosamente) convertidos de volta para a aplicação URLs amigáveis assim:

RewriteRule ^/seo-friendly-url/ /test/index.cfm [I,L]

Bastante simples.

Mas eu também precisam de URLs já indexado em mecanismos de busca (por exemplo) para ser 301 redirecionado para o seo-friendly versão.Assim:

RewriteRule ^/test/index.cfm    /seo-friendly-url/ [I,R=301]

Cada uma destas obras de multa no isolamento.Mas quando eu tenho na minha .arquivo ini eu acabar com /seo-friendly-url/ mostrando na minha barra de endereço do browser, mas eu estou sendo servido um 404.(Sim /teste/index.cfm definitivamente não existe!)

Eu sei que parece uma referência circular, mas a primeira regra apenas reescreve a URL entre o IIS e o pedido, não há de redirecionamento, então eu não estou acertando Isapi Rewrite uma segunda vez.Ou estou errado sobre o que?

Eu activado o registo no Isapi Rewrite e eu estou vendo a seguinte:

HttpFilterProc SF_NOTIFY_PREPROC_HEADERS
DoRewrites
New Url: '/seo-friendly-url/'
ApplyRules (depth=0)
Rule 1 : 1
Result (length 15): /test/index.cfm
ApplyRules (depth=1)
Rule 1 : -1
Rule 2 : 1
Result (length 18): /seo-friendly-url/
ApplyRules: returning 301
ApplyRules: returning 1
Rewrite Url to: '/seo-friendly-url/'

Alguém tem alguma idéia?

Foi útil?

Solução 2

Através de um pouco de tentativa e erro que eu vim acima com uma solução para isso.

Especificar que o redirecionamento de correspondência é no final da seqüência de caracteres usando o símbolo$:

RewriteRule ^/test/index.cfm$    /seo-friendly-url/ [I,R=301]

Fazer a reescrita de URL trivialmente diferente do redirecionar cadeia de correspondência - neste caso, a adição de um desnecessário "?":

RewriteRule ^/seo-friendly-url/ /test/index.cfm? [I,L]

Outras dicas

Você tem duas diferentes reescreve aqui e ele deve funcionar se você fizer isso direito

  1. A primeira nunca é visto pelo cliente do agente de usuário.Pedidos /seo-friendly e reescrevê-lo internamente e responder

  2. A segunda opção não é realmente uma reescrita, mas um redirecionamento.Enviar de volta para o cliente e ele re-pedidos o /seo-friendly -- eu acho que você precisa usar [R=301,L] para dizer que este é o fim da linha -- basta retornar (L faz isso)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top