Nginx vers apache erreur

Nouveau WRInaute
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 :)
 
WRInaute discret
Et pourquoi vouloir migrer d'une ferrari ver une 2 cheveaux lol... Personnelement je garderais le serveur NGnix même s'il faut l'installer sur le deuxième serveur...
 
Nouveau WRInaute
Parce que je n'ai pas le choix :roll: Le serveur de ce site c'est pas moi qui le gère, j'installe le site web d'un sous-traitant conçu pour mes serveurs (nginx) sur le serveur du client (apache) (car il a son propre serveur et ne démord pas d'apache)... Du coup j'ai besoin d'aide pour cette règle de ré-écriture ;)

Merci!
 
Nouveau WRInaute
J'ai la nette impression qu'il y a quelque chose qui cloche sur la configuration de ce serveur, même avec la règle suivante :

RewriteRule (.*) index.php?mod=$1 [L]

La requête suivante :

monsite.com/articles

J'obtient les variables suivantes :

Array
(
[mod] => index.php
)

Avez-vous une idée de ce qui peux causer ça ?

L'hébergement vient de chez iweb.com

Merci !
 
Nouveau WRInaute
Je n'ai pas encore trouvé...

J'ai donc "patché" le code de mon sous-traitant via les fonctions de buffer php pour "dé-ré-écrire" ses urls... Mal fait ce code, j'aurais bien aimé devoir changer qu'une variable pour désactiver l'url rewrite ^^
 
Discussions similaires
Haut