Estoy tratando de escribir directivas de redireccionamiento en .htaccess para reenviar internamente todas las solicitudes de los usuarios como esta:

  • Redirija cualquier solicitud fuera de la carpeta de idioma a una carpeta de idioma predeterminada como esta:
example.com -> example.com/en
  • Redirija cualquier solicitud con (en|de) al archivo solicitado de esta manera:
example.com/de/my-page.php -> example.com/my-page.php?lang=de
  • Los archivos index.php deberían funcionar con o sin barra diagonal final:
example.com/en/ and example.com/en
  • Cada solicitud en una carpeta de idioma debe redirigir al archivo solicitado con cadenas de consulta como esta:
example.com/en/contact.php -> example.com/en/contact.php?lang=en
  • Para los proyectos de carpeta, cada solicitud debe conducir al archivo view-project.php con las respectivas cadenas de consulta como esta:
example.com/en/projects/test -> example.com/view-project.php?lang=en&path=test

Aquí está mi intento, pero no funciona sin una barra diagonal en una solicitud como: http://www.example.com/de

RewriteEngine On

RewriteRule ^(en|de)/(.*)$ $2?lang=$1 [L,QSA,NC]

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^projects/([^/\.]+)/?$ view-project.php?path=$1 [QSA,L]

¿Cómo puedo conseguir esto?

Esto es posible un duplicado y me disculpo por eso. Busqué en todas partes y leí alrededor de 100 publicaciones, pero no encontré lo que estaba buscando.

no answer