.htaccess con parámetros ocultos de php y selección de idioma

Parece que no puedo obtener mi archivo .htaccess para enrutar las direcciones URL a mi sitio correctamente. Tengo una cantidad de idiomas que las personas pueden elegir para desear URL como:

http://www.domain.com/en/
http://www.domain.com/en/contact

Pero parece que no puedo hacer que la página 'contacto' funcione cuando escribo una regla para obtener la variable 'en'.

RewriteRule /([^/]+)/([0-9]+)/ index.php?language=$1

Lo uso para obtener el código de idioma, pero ¿cómo puedo hacer que funcione la página de contacto?

EDIT:

Aparentemente, necesitaba alguna opción de QSA, pero ahora el idioma obtiene contacto variable como la variable con el en

RewriteRule ^(.*)$ index.php?language=$1 [QSA,L]

Con esta regla el sitio:

http://www.domain.com/en/contact

Devoluciones:

en/contact

EDIT2

Lo que estoy tratando de lograr es la estructura del directorio:

/
/contact
/about

Tener estas carpetas en la raíz pero tomando e ignorando la variable de idioma /en/. Por lo tanto, no necesito una segunda variable para &page=contact, la necesito para enrutar a la carpeta del directorio.

preguntado el 12 de junio de 12 a las 22:06

1 Respuestas

Intente combinar sus dos expresiones, aunque necesita modificar el segundo grupo: [0-9]+ solo coincidirá con números, no con palabras como contact. Prueba esto:

RewriteRule ^([^/]+)/([^/]+)/?$ index.php?language=$1 [QSA,L]

La QSA La opción permite agregar una cadena de consulta a la URL limpia, tal vez algo como esto:

http://www.domain.com/en/contact?to=support&subject=Hello

En respuesta a su comentario, esta expresión debería funcionar:

RewriteRule ^([^/]*)/([^/]+)/?$ $2/index.php?language=$1 [QSA,L]

En la regla reescrita, $2 mantiene contact, por ejemplo, y $1 mantiene en. El primero se utiliza como directorio y el segundo como argumento en la cadena de consulta.

Respondido el 12 de junio de 12 a las 23:06

Se corrigieron los números a agradecimiento general, pero lea mi edit2 para obtener aclaraciones. - user1452271

¿Está tratando de obtener, por ejemplo, /en/contact ir a /contact/index.php?args=here, o está tratando de obtener de /en/contact para sólo /contact en tu reescritura? - Bojangles

Esencialmente esto: /en/contact para ir a /contact/index.php?language=$1 - user1452271

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.