Ajouter une barre oblique pour une requête réécrite spécifique

Je travaille sur une classe “ManualTranslation” et je suis coincé à la partie .htaccess.

J’essaie de réécrire cette requête ?language=xx dans /xx/ seulement.

Jusqu’à présent, je parviens à le faire fonctionner, je ne suis pas sûr que ce soit bon ou correct … Mais il manque une chose à coup sûr. Si pour une raison quelconque – quelqu’un essaie de sélectionner la langue manuellement en disant:

http://domain.com/it et oublie d’append une barre oblique, mes pièces .htaccess échouent. Donc, il devrait append automatiquement cette barre oblique si elle est absente de ce paramètre de requête.

 RewriteEngine On Options +FollowSymlinks RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([a-zA-Z]{2})/(.*)$ $2?language=$1 [QSA] 

Donc pour l’instant, cela ne fonctionne que de cette façon: http://domain.com/it/ mais pas http://domain.com/it cause de la barre oblique manquante qui devrait être là.

Si quelqu’un peut me dire ce qui me manque?


Aussi, je me demande s’il est possible de supprimer cette chaîne de requête réécrite avec php si elle ne parvient pas à trouver la langue. En ce moment, je suis simplement en train de redirect vers le fichier actuel et je ne suis pas satisfait

 if ( isset($query) && !$this->isAllowed($query) ) { header("Location: {$_SERVER['PHP_SELF']}"); exit; } 

Vous pouvez modifier votre règle actuelle pour autoriser les URL ne se terminant pas par / :

 RewriteEngine On Options +FollowSymlinks RewriteBase / ## Adding a trailing slash RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{THE_REQUEST} \s/+.*?[^/][?\s] RewriteRule [^/]$ %{REQUEST_URI}/ [L,R=301] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([a-zA-Z]{2})(/.*)?$ $2?language=$1 [QSA,L] 

Cependant, gardez à l’esprit qu’une URL telle que http://domain.com/contacts ne sera pas affectée par la règle ci-dessus et que le paramètre de language ne sera pas renseigné.

Essaye ça:

 RewriteCond ^([az]{2})$ /$1/ [R=301,L,NC] 

Mettez-le juste après votre ligne RewriteBase .