OVH Community, votre nouvel espace communautaire.

.htaccess mal lu/interprété : problème chez OVH ?


deutz-passion
22/07/2015, 20h08
Hello janus, merci pour votre retour.
Le RewriteCond, je l'ai implémenté pour ne plus être embêté par les "/" qui peuvent trainer à chaque fin d'url, j'avais le droit à une belle erreur 404 à chaque fois que cela se produisait.
Je vais tester demain votre proposition, cependant, ça devrait gêner toutes mes autres ré-écritures, et pas seulement une seule.

janus57
22/07/2015, 19h15
Bonjour,

visiblement PHP a un petit problème de traduction dans l'adresse chez OVH (c'est plus lisible une fois mise en forme...) :
Code:
array(48) {
["USER"]=>string(8) "deutzpas"
["FCGI_ROLE"]=>string(9) "RESPONDER"
["APP_ENGINE_VERSION"]=>string(3) "5.4"
["APP_ENGINE"]=>string(3) "php"
["ENVIRONMENT"]=>string(10) "production"
["UNIQUE_ID"]=>string(24) "Va@5zgoAcy0AAG1gEhYAAAI8"
["GEOIP_COUNTRY_CODE"]=>string(2) "RE"
["GEOIP_COUNTRY_NAME"]=>string(7) "Reunion"
["GEOIP_DMA_CODE"]=>string(1) "0"
["GEOIP_AREA_CODE"]=>string(1) "0"
["GEOIP_LATITUDE"]=>string(10) "-21.100000"
["GEOIP_LONGITUDE"]=>string(9) "55.599998"
["SCRIPT_URL"]=>string(65) "/actualites/nouveau-directeur-france-pour-same-deutz-fahr-72.html"
["SCRIPT_URI"]=>string(92) "http://www.deutz-passion.fr/actualites/nouveau-directeur-france-pour-same-deutz-fahr-72.html"
["CFG_CLUSTER"]=>string(10) "cluster010"
["HTTP_REMOTE_IP"]=>string(12) "90.10.64.254"
["HTTP_HOST"]=>string(20) "www.deutz-passion.fr"
["HTTP_USER_AGENT"]=>string(82) "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:39.0) Gecko/20100101 Firefox/39.0"
["HTTP_ACCEPT"]=>string(63) "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
["HTTP_ACCEPT_LANGUAGE"]=>string(35) "fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3"
["HTTP_ACCEPT_ENCODING"]=>string(13) "gzip, deflate"
["HTTP_REFERER"]=>string(93) "http://www.deutz-passion.fr/actualites/innovation-deutz-fahr-automatic-hitch-coupling-55.html"
["HTTP_COOKIE"]=>string(57) "60gp=R1864026849; _ga=GA1.2.1725783336.1437574452; _gat=1"
["HTTP_CONNECTION"]=>string(10) "keep-alive"
["HTTP_CACHE_CONTROL"]=>string(9) "max-age=0"
["SERVER_SIGNATURE"]=>string(0) ""
["SERVER_SOFTWARE"]=>string(6) "Apache"
["SERVER_NAME"]=>string(20) "www.deutz-passion.fr"
["SERVER_ADDR"]=>string(13) "178.33.103.83"
["SERVER_PORT"]=>string(2) "80"
["REMOTE_ADDR"]=>string(12) "90.10.64.254"
["DOCUMENT_ROOT"]=>string(18) "/home/deutzpas/www"
["SERVER_ADMIN"]=>string(31) "postmaster@www.deutz-passion.fr"
["SCRIPT_FILENAME"]=>string(33) "/home/deutzpas/www/actualites.php"
["REMOTE_PORT"]=>string(5) "31815"
["GATEWAY_INTERFACE"]=>string(7) "CGI/1.1"
["SERVER_PROTOCOL"]=>string(8) "HTTP/1.1"
["REQUEST_METHOD"]=>string(3) "GET"
["QUERY_STRING"]=>string(0) ""
["REQUEST_URI"]=>string(65) "/actualites/nouveau-directeur-france-pour-same-deutz-fahr-72.html"
["SCRIPT_NAME"]=>string(15) "/actualites.php"
["PATH_INFO"]=>string(54) "/nouveau-directeur-france-pour-same-deutz-fahr-72.html"
["PATH_TRANSLATED"]=>string(77) "/homez.231/deutzpas/www/nouveau-directeur-france-pour-same-deutz-fahr-72.html"
["PHP_SELF"]=>string(69) "/actualites.php/nouveau-directeur-france-pour-same-deutz-fahr-72.html"
["REQUEST_TIME_FLOAT"]=>float(1437579726.5198)
["REQUEST_TIME"]=>int(1437579726)
["argv"]=>array(0) { }
["argc"]=>int(0)
}
Et votre local :
Code:
array(34) { 
["REDIRECT_STATUS"]=>string(3) "200" 
["HTTP_HOST"]=>string(14) "localhost:8080" 
["HTTP_USER_AGENT"]=>string(82) "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:39.0) Gecko/20100101 Firefox/39.0" 
["HTTP_ACCEPT"]=>string(63) "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" 
["HTTP_ACCEPT_LANGUAGE"]=>string(35) "fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3" 
["HTTP_ACCEPT_ENCODING"]=>string(13) "gzip, deflate" 
["HTTP_REFERER"]=>string(32) "http://localhost:8080/actualites" 
["HTTP_COOKIE"]=>string(39) "_ga=GA1.1.2066517211.1437574771; _gat=1" 
["HTTP_CONNECTION"]=>string(10) "keep-alive" 
["HTTP_CACHE_CONTROL"]=>string(9) "max-age=0" 
["PATH"]=>string(29) "/usr/bin:/bin:/usr/sbin:/sbin" 
["SERVER_SIGNATURE"]=>string(0) "" 
["SERVER_SOFTWARE"]=>string(140) "Apache/2.2.29 (Unix) mod_wsgi/3.4 Python/2.7.8 PHP/5.5.26 mod_ssl/2.2.29 OpenSSL/0.9.8zf DAV/2 mod_fastcgi/2.4.6 mod_perl/2.0.8 Perl/v5.20.0" 
["SERVER_NAME"]=>string(9) "localhost" 
["SERVER_ADDR"]=>string(3) "::1" 
["SERVER_PORT"]=>string(4) "8080" 
["REMOTE_ADDR"]=>string(3) "::1" 
["DOCUMENT_ROOT"]=>string(25) "/Volumes/Web/deutzpassion" 
["SERVER_ADMIN"]=>string(15) "you@example.com" 
["SCRIPT_FILENAME"]=>string(40) "/Volumes/Web/deutzpassion/actualites.php" 
["REMOTE_PORT"]=>string(5) "65151" 
["REDIRECT_QUERY_STRING"]=>string(10) "id_actu=66" 
["REDIRECT_URL"]=>string(33) "/actualites/ttv-tour-2014-66.html" 
["GATEWAY_INTERFACE"]=>string(7) "CGI/1.1" 
["SERVER_PROTOCOL"]=>string(8) "HTTP/1.1" 
["REQUEST_METHOD"]=>string(3) "GET" 
["QUERY_STRING"]=>string(10) "id_actu=66" 
["REQUEST_URI"]=>string(33) "/actualites/ttv-tour-2014-66.html" 
["SCRIPT_NAME"]=>string(15) "/actualites.php" 
["PHP_SELF"]=>string(15) "/actualites.php" 
["REQUEST_TIME_FLOAT"]=>float(1437578620.35) 
["REQUEST_TIME"]=>int(1437578620) 
["argv"]=>array(1) { [0]=>string(10) "id_actu=66" } 
["argc"]=>int(1)
}
Perso je dirais que "RewriteCond %{REQUEST_FILENAME} !-d" pose le problème ici.
Donc pour corriger soit rajouter un petit "RewriteBase /" soit "RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d" soit le supprimer (pour tester) et si c'est bien ça bah faut lire la doc apache du pourquoi du comment.

P.S. je suis nul en réécriture d'url, pas contre google lui a plein d'infos =)

Cordialement, janus57

deutz-passion
22/07/2015, 19h11
Sujet clos, l'erreur vient très vraisemblablement de la capacité du serveur apache de faire la différence entre (.*)-([0-9]*), puisque la directive (.*) veut dire tout caractère alphanumérique.
La solution trouvée a été d'inverser les infos constituant l'url, avec l'id numérique au début.

deutz-passion
22/07/2015, 17h44
Bonjour bonjour !

Me revoilà avec un nouveau souci sur mon .htaccess. Il fonctionne très bien SAUF sur 1 règle. J'ai beau tout faire, des var_dump en veux-tu en voila, des modifications de codes pour émettre autrement mes urls, rien n'y fait, les serveurs Apache d'OVH n'arrivent pas à interpréter mes redirections.

Plus concrètement, cette url :
Code:
http://www.deutz-passion.fr/actualites/nouveau-directeur-france-pour-same-deutz-fahr-72.html
devraient en toute logique matcher avec cette règle :
Code:
RewriteRule ^actualites/(.+)-([0-9]+).html$ actualites.php?id_actu=$2 [L]
Sauf que ... pour une raison que j'ignore, je tombe systématiquement sur
Code:
http://www.deutz-passion.fr/actualites
, sauf que j'ai également cette règle qui devrait m'en empêcher :
Code:
RewriteRule ^actualites$ /actualites.php [L]
Quand je fais un var_dump($_GET) dans mon code (ultra simple au demeurant, voyez par vous-même) :

Code PHP:
                            var_dump($_GET);
                            if (! isset($_GET['id_actu'])) {
                                ?>
                                
                                    

TOUTE L'ACTUALITE


                                

                                
                                                                        afficheLastListActu();
                                    
?>
                                

                                                            } else {
                                
afficheActu();    
                            }
j'ai un joli
Code PHP:
array(0) {} 
en retour

Mon .htaccess complet :

Code:
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [R=301,L]

RewriteRule ^actualites$ /actualites.php [L]
RewriteRule ^actualite/(.+)-([0-9]+).html$ actualites.php?id_actu=$2 [L]
RewriteRule ^actualites/(.+)-([0-9]+).html$ actualites.php?id_actu=$2 [L]


RewriteRule ^fiches$ /bcc.php [L]
RewriteRule ^fiches/(mb|rb|tracteur|faneur|andaineur)$ /bcc.php?q=$1 [L]

RewriteRule ^fiches/(mb|rb|tracteur|faneur|andaineur)/(Deutz|Deutz-Fahr)/(.+)/(.+)/([0-9]+)\.html$ /bcc.php?q=$1&marque=$2&famille=$3&modele=$4&id_modele=$5 [L]
RewriteRule ^fiches/(mb|rb|tracteur|faneur|andaineur)/(Deutz|Deutz-Fahr)/(.+)/(.+)\.html$ /bcc.php?q=$1&marque=$2&famille=$3&modele=$4 [L]
RewriteRule ^fiches/(mb|rb|tracteur|faneur|andaineur)/(Deutz|Deutz-Fahr)/(.+)$ /bcc.php?q=$1&marque=$2&famille=$3 [L]
RewriteRule ^fiches/(mb|rb|tracteur|faneur|andaineur)/(Deutz|Deutz-Fahr)$ /bcc.php?q=$1&marque=$2 [L]
RewriteRule ^fiches/(mb|rb|tracteur|faneur|andaineur)/(.+)/(.+)\.html$ - [G]

RewriteRule ^fiches/(.+)$ - [G]

RewriteRule ^photos$ /affichePhotos.php
RewriteRule ^photos/(.+)-([0-9]+)\.html$ /affichePhotos.php?album=$1&id=$2 [L]

RewriteRule ^brochures$ /brochures.php [L]
RewriteRule ^manuels$ /manuels.php [L]
RewriteRule ^eclates$ /eclates.php [L]
RewriteRule ^partenaires$ /liens.php [L]
RewriteRule ^contact$ /contact.php [L]
RewriteRule ^infos$ /infos.php [L]
RewriteRule ^plan$ /plan_site.php [L]

RewriteRule ^galerie/(.+)$ /photos [R=301]

RewriteRule ^forum$ forum.deutz-passion.fr [R=301]
RewriteRule ^forum/(.+)$ http://forum.deutz-passion.fr/$1 [L]
RewriteRule ^phpBB3/(.+)$ http://forum.deutz-passion.fr/$1 [L]
Autre test, un var_dump($_SERVER) en local :

Code:
array(34) { ["REDIRECT_STATUS"]=> string(3) "200" ["HTTP_HOST"]=> string(14) "localhost:8080" ["HTTP_USER_AGENT"]=> string(82) "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:39.0) Gecko/20100101 Firefox/39.0" ["HTTP_ACCEPT"]=> string(63) "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" ["HTTP_ACCEPT_LANGUAGE"]=> string(35) "fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3" ["HTTP_ACCEPT_ENCODING"]=> string(13) "gzip, deflate" ["HTTP_REFERER"]=> string(32) "http://localhost:8080/actualites" ["HTTP_COOKIE"]=> string(39) "_ga=GA1.1.2066517211.1437574771; _gat=1" ["HTTP_CONNECTION"]=> string(10) "keep-alive" ["HTTP_CACHE_CONTROL"]=> string(9) "max-age=0" ["PATH"]=> string(29) "/usr/bin:/bin:/usr/sbin:/sbin" ["SERVER_SIGNATURE"]=> string(0) "" ["SERVER_SOFTWARE"]=> string(140) "Apache/2.2.29 (Unix) mod_wsgi/3.4 Python/2.7.8 PHP/5.5.26 mod_ssl/2.2.29 OpenSSL/0.9.8zf DAV/2 mod_fastcgi/2.4.6 mod_perl/2.0.8 Perl/v5.20.0" ["SERVER_NAME"]=> string(9) "localhost" ["SERVER_ADDR"]=> string(3) "::1" ["SERVER_PORT"]=> string(4) "8080" ["REMOTE_ADDR"]=> string(3) "::1" ["DOCUMENT_ROOT"]=> string(25) "/Volumes/Web/deutzpassion" ["SERVER_ADMIN"]=> string(15) "you@example.com" ["SCRIPT_FILENAME"]=> string(40) "/Volumes/Web/deutzpassion/actualites.php" ["REMOTE_PORT"]=> string(5) "65151" ["REDIRECT_QUERY_STRING"]=> string(10) "id_actu=66" ["REDIRECT_URL"]=> string(33) "/actualites/ttv-tour-2014-66.html" ["GATEWAY_INTERFACE"]=> string(7) "CGI/1.1" ["SERVER_PROTOCOL"]=> string(8) "HTTP/1.1" ["REQUEST_METHOD"]=> string(3) "GET" ["QUERY_STRING"]=> string(10) "id_actu=66" ["REQUEST_URI"]=> string(33) "/actualites/ttv-tour-2014-66.html" ["SCRIPT_NAME"]=> string(15) "/actualites.php" ["PHP_SELF"]=> string(15) "/actualites.php" ["REQUEST_TIME_FLOAT"]=> float(1437578620.35) ["REQUEST_TIME"]=> int(1437578620) ["argv"]=> array(1) { [0]=> string(10) "id_actu=66" } ["argc"]=> int(1) }
et le même sur OVH :

Code:
array(48) { ["USER"]=> string(8) "deutzpas" ["FCGI_ROLE"]=> string(9) "RESPONDER" ["APP_ENGINE_VERSION"]=> string(3) "5.4" ["APP_ENGINE"]=> string(3) "php" ["ENVIRONMENT"]=> string(10) "production" ["UNIQUE_ID"]=> string(24) "Va@5zgoAcy0AAG1gEhYAAAI8" ["GEOIP_COUNTRY_CODE"]=> string(2) "RE" ["GEOIP_COUNTRY_NAME"]=> string(7) "Reunion" ["GEOIP_DMA_CODE"]=> string(1) "0" ["GEOIP_AREA_CODE"]=> string(1) "0" ["GEOIP_LATITUDE"]=> string(10) "-21.100000" ["GEOIP_LONGITUDE"]=> string(9) "55.599998" ["SCRIPT_URL"]=> string(65) "/actualites/nouveau-directeur-france-pour-same-deutz-fahr-72.html" ["SCRIPT_URI"]=> string(92) "http://www.deutz-passion.fr/actualites/nouveau-directeur-france-pour-same-deutz-fahr-72.html" ["CFG_CLUSTER"]=> string(10) "cluster010" ["HTTP_REMOTE_IP"]=> string(12) "90.10.64.254" ["HTTP_HOST"]=> string(20) "www.deutz-passion.fr" ["HTTP_USER_AGENT"]=> string(82) "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:39.0) Gecko/20100101 Firefox/39.0" ["HTTP_ACCEPT"]=> string(63) "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" ["HTTP_ACCEPT_LANGUAGE"]=> string(35) "fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3" ["HTTP_ACCEPT_ENCODING"]=> string(13) "gzip, deflate" ["HTTP_REFERER"]=> string(93) "http://www.deutz-passion.fr/actualites/innovation-deutz-fahr-automatic-hitch-coupling-55.html" ["HTTP_COOKIE"]=> string(57) "60gp=R1864026849; _ga=GA1.2.1725783336.1437574452; _gat=1" ["HTTP_CONNECTION"]=> string(10) "keep-alive" ["HTTP_CACHE_CONTROL"]=> string(9) "max-age=0" ["SERVER_SIGNATURE"]=> string(0) "" ["SERVER_SOFTWARE"]=> string(6) "Apache" ["SERVER_NAME"]=> string(20) "www.deutz-passion.fr" ["SERVER_ADDR"]=> string(13) "178.33.103.83" ["SERVER_PORT"]=> string(2) "80" ["REMOTE_ADDR"]=> string(12) "90.10.64.254" ["DOCUMENT_ROOT"]=> string(18) "/home/deutzpas/www" ["SERVER_ADMIN"]=> string(31) "postmaster@www.deutz-passion.fr" ["SCRIPT_FILENAME"]=> string(33) "/home/deutzpas/www/actualites.php" ["REMOTE_PORT"]=> string(5) "31815" ["GATEWAY_INTERFACE"]=> string(7) "CGI/1.1" ["SERVER_PROTOCOL"]=> string(8) "HTTP/1.1" ["REQUEST_METHOD"]=> string(3) "GET" ["QUERY_STRING"]=> string(0) "" ["REQUEST_URI"]=> string(65) "/actualites/nouveau-directeur-france-pour-same-deutz-fahr-72.html" ["SCRIPT_NAME"]=> string(15) "/actualites.php" ["PATH_INFO"]=> string(54) "/nouveau-directeur-france-pour-same-deutz-fahr-72.html" ["PATH_TRANSLATED"]=> string(77) "/homez.231/deutzpas/www/nouveau-directeur-france-pour-same-deutz-fahr-72.html" ["PHP_SELF"]=> string(69) "/actualites.php/nouveau-directeur-france-pour-same-deutz-fahr-72.html" ["REQUEST_TIME_FLOAT"]=> float(1437579726.5198) ["REQUEST_TIME"]=> int(1437579726) ["argv"]=> array(0) { } ["argc"]=> int(0) }
On voit bien qu'en local on a
Code:
["REQUEST_METHOD"]=> string(3) "GET" ["QUERY_STRING"]=> string(10) "id_actu=66"
et sur OVH nada :
Code:
["REQUEST_METHOD"]=> string(3) "GET" ["QUERY_STRING"]=> string(0) ""


Que se passe-t-il ??