Bonjour
Mon site (nouveau site qui viens d’être mis en ligne et n'a encore jamais fonctionné) génère des des erreur 500 a tous les visiteurs et les logs indique que cela est du a de trop nombreuse redirection. Cependant quand je l'ai développer en local sur mon PC avec wamp tous a fonctionner comme prévu (d’ailleurs les .test dans le fichier htaccess sont du a cela car je n'ai pas de ssl pour mes test en local).
je passe par des redirection (voir pièce jointe pour le detail) et le début du code (ajout du www et passage en https fonctionne comme prévu). Pour le dossier image et le fichier de javascript ils sont bien disponible en ligne. pour le fichier index.php (voir fichier joint) si je met directement le nom du fichier dans la bar d'adresse il est bien exécuté et me renvois à l'endroit prévu mais si je ne précise pas le nom du fichier cela ne fonctionne pas donc comment remédier à cela ?
ensuite j'ai un problème encore pire avec la lignes qui doit renvoyer vers pages.php car le script ne s’exécute jamais donc si quelqu'un peut m'aider sur les restriction des redirections je suis preneur d'informations.
Cordialement
la pièce jointe du code php n’étant pas passer voici sont contenu
<?phpinclude('include/config.php'); //contien les defines de URL et LANGUE_DEFAUT$fichier = fopen('index.txt', 'c+b'); //2ligne a suprimer apres les testsfwrite($fichier, 'TEST');//listage des langues suportéesinclude('include/lang/traduction.php');$langues = array_keys($traduction);//recupération et mise en forme de $_SERVER['HTTP_ACCEPT_LANGUAGE']$langs = [];foreach (array_filter(array_map('trim', explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE'] ?? ''))) as $part){$pieces = array_map('trim', explode(';', $part));$tag = strtolower($pieces[0]);$q = 1.0;if (isset($pieces[1]) && strpos($pieces[1], 'q=') !== false) {$q = (float) substr($pieces[1], strpos($pieces[1], 'q=') + 2);}//controle que q soit dans la plage 0...1$q = max(0.0, min(1.0, $q));$langs[] = ['tag' => $tag, 'q' => $q];}//trie par q décroisant, preserve l'odre original pour la meme valeur de qusort($langs, function($a, $b){if ($a['q'] === $b['q']) return 0;return ($a['q'] > $b['q']) ? -1 : 1;});//on traite langs par ordre jusqua trouver une langue géréeforeach ($langs as $entry){$tag = $entry['tag'];if ($tag === '*'){ //aucune preférence donc on utilise la langue par defaultheader('Location: '.URL.'/'.LANGUE_DEFAUT.'/');exit;}if (in_array($tag, $langues, true)){ //corespondence exacteheader('Location: '.URL.'/'.$tag.'/');exit;}if (in_array(($tag = explode('-', $tag)[0]), $langues, true)){ //corespondance sans la preférence régionaleheader('Location: '.URL.'/'.$tag.'/');exit;}}//aucune corespondance donc on utilise la langue par defaultheader('Location: '.URL.'/'.LANGUE_DEFAUT.'/');?>Bonjour, quel est le nom de domaine, svp ?
Apsèe avoir répondu à votre message où le deuxième n'apparaissait pas, maintenant il y a deux réponses et le compteur dit qu'il y en a une...
Avec le nom de domaine, on pourrait savoir si l'erreur500 vient du serveur web (problème de .htaccess) ou bien de PHP (problème de programmation PHP)
Les trop nombresuses redirections peuvent venir du .htaccess ou du PHP...
le site est https://www.aux-delices-du-gallois.fr/
vu le contenu du fichier index.txt le code php commence à s'éxécuter mais par contre pour mon fichier pages.php il ne semble ne jamais s’exécuter (sauf si je tape à la mains le non du fichier mais dan ce cas la il considère que je suis sur une page invalide et renvoi sur l’accueil du site mais cela est normal car pages.php analyse le contenu de $_SERVER['REQUEST_URI'] et il prévu pour ce comporter comme cela si on l'appel directement)
Bonjour,
Soit j'ai pas compris ce que vous souhaitez faire, soit vous avez un problème de design, là tel que présenté votre code du .htaccess renvoie en permanence sur /pages.php même si vous appelez déjà l'adresse https://www.example.fr/pages.php
Pour les .htaccess je recommande ce site : https://htaccess.madewithlove.com/
Ce qui avec ce code + https://www.example.fr/pages.php en entrée :
RewriteEngine On#pour serveur de prod#ajout du wwwRewriteCond %{HTTP_HOST} !^www\.example\.fr [NC]RewriteCond %{HTTP_HOST} !^.*\.test$ [NC]RewriteCond %{HTTP_HOST} !^$RewriteRule ^/?(.*) https://www.example.fr/$1 [L,R=301,NE]#passage en httpsRewriteCond %{HTTP_HOST} ^www\.example\.fr$ [NC]RewriteCond %{SERVER_PORT} 80RewriteRule ^/?(.*) https://www.example.fr/$1 [L,R=301,NE]#commun a tous les cas#repertoire imagesRewriteRule ^images/.* - [L]#pour le javascript on envoit directement le fichierRewriteRule ^javascript.js$ - [L]#pages d'acceuil par default si le client n'indique pas de pageRewriteRule ^$ index.php [L]RewriteRule ^index.php$ - [L]RewriteRule .* pages.php [L]Donne :
Cordialement, janus57
dèja merci pour le site de test des fichier htaccess car je ne le connaissais pas
en aucun cas le visiteur doit avoir pages.php dans la barre d'adresse de son navigateur (j'ai fait le test de le mètre à la mains et la cela ne détecte pas la langue choisie par le visiteur et cela renvoi sur l'url d’accueil mais la page ne s'affiche pas)
Pour la sensibilité à la case j'ai bien prix cela en compte et j'ai que des majuscule dans mes URL
probleme resolu et voisi le .htaccess qui va bien
RewriteEngine On
# ========================
# FORCER style.css vers PHP
# ========================
RewriteRule ^style\.css$ - [L]
# ========================
# IGNORER FICHIERS RÉELS
# ========================
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteRule ^ - [L]
# ========================
# PROD : forcer www + https
# ========================
RewriteCond %{HTTP_HOST} !^www\.domaine\.fr$ [OR]
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://www.domaine.fr%{REQUEST_URI} [L,R=301]
# ========================
# EXCLUSIONS
# ========================
RewriteRule ^images/ - [L]
RewriteRule ^javascript\.js$ - [L]
# ========================
# ROUTING
# ========================
RewriteRule ^$ index.php [L]
RewriteRule ^index\.php$ - [L]