Hébergements Starter, Perso, Pro ou performance - [résolu] url rewriting et erreur 500
... / [résolu] url rewriting et...
BMPCreated with Sketch.BMPZIPCreated with Sketch.ZIPXLSCreated with Sketch.XLSTXTCreated with Sketch.TXTPPTCreated with Sketch.PPTPNGCreated with Sketch.PNGPDFCreated with Sketch.PDFJPGCreated with Sketch.JPGGIFCreated with Sketch.GIFDOCCreated with Sketch.DOC Error Created with Sketch.
Frage

[résolu] url rewriting et erreur 500

Von
W T
Erstellungsdatum 2026-03-18 19:38:15 (edited on 2026-03-19 21:56:01) in Hébergements Starter, Perso, Pro ou performance

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

  • htaccess.txt 952Bytes

4 Antworten ( Latest reply on 2026-03-19 21:53:58 Von
W T
)

la pièce jointe du code php n’étant pas passer voici sont contenu

<?php
include('include/config.php'); //contien les defines de URL et LANGUE_DEFAUT

$fichier = fopen('index.txt', 'c+b');    //2ligne a suprimer apres les tests
fwrite($fichier, 'TEST');

//listage des langues suportées
include('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 q
usort($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ée
foreach ($langs as $entry){
    $tag = $entry['tag'];
    if ($tag === '*'){ //aucune preférence donc on utilise la langue par default
        header('Location: '.URL.'/'.LANGUE_DEFAUT.'/');
        exit;
    }
    if (in_array($tag, $langues, true)){ //corespondence exacte
        header('Location: '.URL.'/'.$tag.'/');
        exit;
    }
    if (in_array(($tag = explode('-', $tag)[0]), $langues, true)){ //corespondance sans la preférence régionale
        header('Location: '.URL.'/'.$tag.'/');
        exit;
    }
}
//aucune corespondance donc on utilise la langue par default
header('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 www
RewriteCond %{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 https
RewriteCond %{HTTP_HOST} ^www\.example\.fr$ [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^/?(.*) https://www.example.fr/$1 [L,R=301,NE]

#commun a tous les cas

#repertoire images
RewriteRule ^images/.* - [L]

#pour le javascript on envoit directement le fichier
RewriteRule ^javascript.js$ - [L]

#pages d'acceuil par default si le client n'indique pas de page
RewriteRule ^$ index.php [L]
RewriteRule ^index.php$ - [L]


RewriteRule .* pages.php [L]

 

Donne :

 

Cordialement, janus57

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]