J'essaie d'écrire des directives de redirection dans le .htaccess pour transférer en interne toutes les demandes des utilisateurs comme ceci :

  • Redirigez toute demande en dehors du dossier de langue vers un dossier de langue par défaut comme celui-ci :
example.com -> example.com/en
  • Redirigez toute requête avec (en|de) vers le fichier demandé comme ceci :
example.com/de/my-page.php -> example.com/my-page.php?lang=de
  • Les fichiers index.php doivent fonctionner avec ou sans barre oblique :
example.com/en/ and example.com/en
  • Chaque requête dans un dossier de langue doit rediriger vers le fichier demandé avec des chaînes de requête comme celle-ci :
example.com/en/contact.php -> example.com/en/contact.php?lang=en
  • Pour les projets de dossier, chaque requête doit conduire au fichier view-project.php avec les chaînes de requête respectives comme ceci :
example.com/en/projects/test -> example.com/view-project.php?lang=en&path=test

Voici ma tentative, mais cela ne fonctionne pas sans barre oblique finale sur une requête telle que : 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]

Comment puis-je atteindre cet objectif?

C'est possible un doublon et je m'en excuse. J'ai cherché partout et lu environ 100 articles, mais je n'ai pas trouvé ce que je cherchais.

no answer