Je construis un site au dessus de CodeIgniter. Pour que les URI soient plus jolis, CI utilise la règle mod_rewrite
RewriteCond $1 !^(index\.php|img|css|js|fonts|robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [NC]
Maintenant, je voudrais autoriser les gens à demander des pages dans une langue spécifique, c’est-à-dire traiter à la fois https://example.com/home et https://example.com/spa/home normaux. A ce stade, il est très troublant pour moi de créer de nouveaux contrôleurs, donc je veux définir un cookie de langue et réécrire l’URI d’origine. Après avoir lu quelques bons articles sur mod_rewrite, je suis venu avec cette
RewriteCond %{QUERY_STRING} ^(eng|spa|ger|fre)/(.*) [NC] RewriteRule ^(.*)$ %2 [R,NC,QSA,CO=lang:%1:.example.com:1440:/] RewriteCond $1 !^(index\.php|img|css|js|fonts|robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [NC]
Cependant, lorsque j’essaie d’accéder à https://example.com/spa/home, l’URI n’est pas réécrit, lang
cookie non défini et l’erreur 404 Page Not Found est renvoyée.
Je pense que ma règle et la règle CodeIgniter d’origine sont en conflit. Sont-ils? Et est-ce ma seule erreur?
Merci beaucoup!
UPD: Apache / 2.4.10
Essaye ça:
RewriteCond %{REQUEST_URI} ^/(eng|spa|ger|fre)/(.*) [NC] RewriteRule ^(eng|spa|ger|fre)/(.*)$ /$2 [R,NC,QSA,CO=lang:%1:ubtv.local:1440:/]
/spa/home
n’est pas une queryssortingng
, donc vous devez faire correspondre la variable %{REQUEST_URI}
comme suit
RewriteCond %{REQUEST_URI} ^/(eng|spa|ger|fre)/(.*) [NC] RewriteRule ^(.*)$ /%2 [R,NC,QSA,CO=lang:%1:.example.com:1440:/]