Faz exceção à regra RedirectMatch do site inteiro

1

Temos esta regra RedirectMatch para mover clientes no site SSL ativado, mantendo o caminho que eles estão tentando acessar:

Redirectmatch permanent (.*) https://www.foobar.com$1

e está funcionando perfeitamente. Agora gostaríamos de adicionar uma exceção para / somepath que não deve ser redirecionada. Como eu posso fazer isso?

Com o mod_rewrite eu adicionaria um rewriterule dizendo "não reescreva e pare de corresponder", mas não existe esse mecanismo com o redirecionamento. Além disso, se eu inverter trivialmente o regexp como! (/ Somepath | / someotherpath) ele não obteria mais o parâmetro $ 1.

    
por Luke404 11.10.2010 / 12:09

2 respostas

1

Você não quer usar o mod_rewrite?

Você pode imitar a funcionalidade com isso:

RewriteCond  %{REQUEST_URI}  !^/(somepath|someotherpath)
RewriteRule  (.*)                       $1                        [R=permanent]
RewriteRule  http://%{SERVER_NAME}(.*)  https://www.foobar.com$1  [L]

Eu não percebi que o Apache usa o PCRE. Como isso acontece, você pode fazer esse tipo de vodu para fazer o que quiser com mod_alias:

RedirectMatch permanent ^/?((?!(thisisfoo|thisisbar)).*) https://www.foobar.com/$1

onde / thisisfoo e / thisisbar são exceções ao redirecionamento.

    
por 11.10.2010 / 17:38
1

De acordo com a documentação (no link ), Redirect s são processados na ordem em que são encontrados. Então, você gostaria de colocar sua regra mais restritiva primeiro e, em seguida, ter sua regra geral no final.

    
por 31.01.2012 / 20:44