Bonjour ou bonsoir à tous et à toutes,
Je suis entrain de migrer certains sites web sur un autre serveur disposant d'apache, je doit ajouter deux règles spécifiques pour le bon fonctionnement d'un site web mais je n'arrive pas à les faire fonctionner convenablement après plusieurs essais et lecture.
Voici les règles originales de la configuration nginx:
rewrite ^/(?!src)([^\-]*)(?:/(.+))?(?:\.x?html?|\.php|\.asp|\.aspx)$ /index.php?mod=$1&query=$2 last;
rewrite ^/(?!src)([^\-]*)$ /index.php?mod=$1 last;
Le but de la première règle est de rediriger les url de type "/articles/site-1.html", "/articles/site-1/page-2/varx-y.html" Les mots "articles, site, page et var" sont à titre indicatifs, car en réalité le nom des variables n'importe pas puisque la règle doit capter tout peu importe les mot. Critères: ne débute pas par le mot "src" (qui est en fait un dossier réel pour les documents statiques), tout ce qui ne contient ps le caractère "-" (utiliser pour séparer les variables des valeurs) = Variable $1 pour "mod=$1", ensuite, tout les caractères avec fin de séquence ce terminant par une extension quelconque = Variable $2 pour "query=$2"
Le but de la deuxième règle est de capter les url de type "/articles", "/articles/". Bref, l'url qui ne contient pas de variables "ré-écrites". Encore là, elle ne doit pas capter ce qui débute par "src" dossier de documents statiques.
J'ai donc essayé quelque chose comme ceci pour commencer :
RewriteRule ^/(?!src)([^\-]*)(?:/(.+))?(?:\.x?html?|\.php|\.asp|\.aspx)$ /index.php?mod=$1&query=$2 [L]
RewriteRule ^/(?!src)([^\-]*)$ /index.php?mod=$1 [L]
Rien ne ce passe, le / du début des règles fait en sorte que rien n'est capté.
RewriteRule ^(?!src)([^\-]*)(?:/(.+))?(?:\.x?html?|\.php|\.asp|\.aspx)$ /index.php?mod=$1&query=$2 [L]
RewriteRule ^(?!src)([^\-]*)$ /index.php?mod=$1 [L]
Internal error, le / de la deuxième partie semble être en cause.
RewriteRule ^(?!src)([^\-]*)(?:/(.+))?(?:\.x?html?|\.php|\.asp|\.aspx)$ index.php?mod=$1&query=$2 [L]
RewriteRule ^(?!src)([^\-]*)$ index.php?mod=$1 [L]
Semblait prometteur, mais si je met un index.php qui "print" les variables en GET, la variable "mod" égale toujours "index" ou "index.php" alors que je tape : monsite.tld/articles ou monsite.tld/articles/var-1.html
Résultat désiré avec "monsite.tld/articles/var-1.html" : mod=articles&query=var-1
Résultat désiré avec "monsite.tld/articles" : mod=articles
J'ai fait pas mal d'autres tests, mais je vous ai transmis les plus probants.
Pourriez-vous m'aider S.V.P ?
Merci
Je suis entrain de migrer certains sites web sur un autre serveur disposant d'apache, je doit ajouter deux règles spécifiques pour le bon fonctionnement d'un site web mais je n'arrive pas à les faire fonctionner convenablement après plusieurs essais et lecture.
Voici les règles originales de la configuration nginx:
rewrite ^/(?!src)([^\-]*)(?:/(.+))?(?:\.x?html?|\.php|\.asp|\.aspx)$ /index.php?mod=$1&query=$2 last;
rewrite ^/(?!src)([^\-]*)$ /index.php?mod=$1 last;
Le but de la première règle est de rediriger les url de type "/articles/site-1.html", "/articles/site-1/page-2/varx-y.html" Les mots "articles, site, page et var" sont à titre indicatifs, car en réalité le nom des variables n'importe pas puisque la règle doit capter tout peu importe les mot. Critères: ne débute pas par le mot "src" (qui est en fait un dossier réel pour les documents statiques), tout ce qui ne contient ps le caractère "-" (utiliser pour séparer les variables des valeurs) = Variable $1 pour "mod=$1", ensuite, tout les caractères avec fin de séquence ce terminant par une extension quelconque = Variable $2 pour "query=$2"
Le but de la deuxième règle est de capter les url de type "/articles", "/articles/". Bref, l'url qui ne contient pas de variables "ré-écrites". Encore là, elle ne doit pas capter ce qui débute par "src" dossier de documents statiques.
J'ai donc essayé quelque chose comme ceci pour commencer :
RewriteRule ^/(?!src)([^\-]*)(?:/(.+))?(?:\.x?html?|\.php|\.asp|\.aspx)$ /index.php?mod=$1&query=$2 [L]
RewriteRule ^/(?!src)([^\-]*)$ /index.php?mod=$1 [L]
Rien ne ce passe, le / du début des règles fait en sorte que rien n'est capté.
RewriteRule ^(?!src)([^\-]*)(?:/(.+))?(?:\.x?html?|\.php|\.asp|\.aspx)$ /index.php?mod=$1&query=$2 [L]
RewriteRule ^(?!src)([^\-]*)$ /index.php?mod=$1 [L]
Internal error, le / de la deuxième partie semble être en cause.
RewriteRule ^(?!src)([^\-]*)(?:/(.+))?(?:\.x?html?|\.php|\.asp|\.aspx)$ index.php?mod=$1&query=$2 [L]
RewriteRule ^(?!src)([^\-]*)$ index.php?mod=$1 [L]
Semblait prometteur, mais si je met un index.php qui "print" les variables en GET, la variable "mod" égale toujours "index" ou "index.php" alors que je tape : monsite.tld/articles ou monsite.tld/articles/var-1.html
Résultat désiré avec "monsite.tld/articles/var-1.html" : mod=articles&query=var-1
Résultat désiré avec "monsite.tld/articles" : mod=articles
J'ai fait pas mal d'autres tests, mais je vous ai transmis les plus probants.
Pourriez-vous m'aider S.V.P ?
Merci
