Mod-Rewrite condicional para configurar o diretório raiz (apache htaccess)

1

Estou tentando escrever um redirecionamento, mas como um noob verde é mais difícil do que eu pensava. O que eu quero é: na condição de que não há nenhuma página específica na url, mas a linguagem está definida, para redirecionar para a home page desse idioma. Primeiramente, eu lhe direi a natureza do atual site de trabalho e o código do apache que faz isso:

/ it / somepage vai bem / somepage? ln = it
/ de / somepage vai muito bem / somepage? ln = de
/ fr / somepage vai bem / somepage? ln = fr
/ cn / somepage vai bem / somepage? ln = cn

# WORKS beautifully
RewriteRule ^zh-CN/(.*) /$1?ln=zh-CN [L]
RewriteRule ^cn/(.*) /$1?ln=zh-CN [L]
RewriteRule ^([a-z][a-z])/(.*) /$2?ln=$1 [L]

Aqui, a terceira linha é o redirecionado padrão. A ast e a segunda linha fazem a exceção para a correcção da linguagem chinesa ir para / cn / somepage

NO ENTANTO

o código acima dá erro quando a raiz é perguntada:
/ it / dá erro 404
/ it dá erro 404
/ de / dá erro 404
/ de dá erro 404

/ xx deve ir para / xx / home? ln = xx
/ xx / deve ir para / xx / home? ln = xx

isso é tudo com a condição de que nenhuma / xx / certainpage seja definida, é claro! Obrigado por qualquer pista!

    
por Sam 03.12.2010 / 09:20

1 resposta

1

Você precisa de uma regra como:

RewriteRule ^([a-z]+)/?$ /$1/home?ln=$1 [L]

Isso também aborda o caso de URLs como foo.com/cn e foo.com/cn/ . Coloque isso como a última regra na cadeia e ele será usado apenas se nada mais corresponder.

    
por 03.12.2010 / 10:21