Problème URL rewriting - 1&1 - impossible de récupérer paramètres

WRInaute discret
Bonjour,

Je rencontre un problème chez 1&1 mais tout fonctionne en local.

J’applique une règle de réécriture.

Si j’accède à ma page non réécrite, pas de problème :

Mais je si veux accéder à l’url propre :

Je peux ouvrir la page mais j’ai erreurs php. Le paramètre "cat" n’est pas transmis.

Si je fais un
Code:
echo 'test'.$_GET['cat'];
, il n’y a rien alors que sur l’url avec paramètre, j'obtiens bien le paramètre.

J’ai déjà utilisé ces règles chez ovh et ça fonctionnait.

Vous avez une idée ?

Mon htaccess :
Code:
Options +FollowSymlinks
RewriteEngine On
RewriteBase /new

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

#fonctionne :
RewriteRule ^toto.html http://www.mon-site.com/new/actualites.php?cat=5&alias=tous [L]

#################################################
# Réécriture URL
#################################################

#RewriteRule  ^new/actualites/([0-9]*)-(.*)\.php$  /new/actualites.php?cat=$1&alias=$2 [L]

Merci.
 
WRInaute accro
je suppose que le dièse devant cette ligne :
#RewriteRule ^new/actualites/([0-9]*)-(.*)\.php$ /new/actualites.php?cat=$1&alias=$2 [L]
N'est pas dans ton htaccess sinon ça risque pas de marcher ;-)

Sinon as tu essayé :
RewriteRule ^new/actualites/(*)\-(.*)\.php$ /new/actualites.php?cat=$1&alias=$2 [L]
 
WRInaute discret
Oui, le # est une erreur dans mon post.Très bonne idées ton test ! Je n’y avais pas pensé.

J’obtiens donc une erreur 500 avec :

Code:
RewriteRule ^new/actualites/(*)\-(.*)\.php$ /new/actualites.php?cat=$1&alias=$2 [L]

C’est peut-être une erreur le (*) ?

Sinon, j’ai essayé avec :

Code:
RewriteRule ^new/actualites/(.*)\-(.*)\.php$ /new/actualites.php?cat=$1&alias=$2 [L]

Et je n’ai pas le paramètre.

Un truc étonnant, si je commente ma ligne RewriteRule … (comme dans mon 1er post, j’affiche quand même la page actu mais sans les paramètres. Comment est ce possible alors qu’il n’y plus la règle ?
 
WRInaute accro
C'est peut être un souci d'ordre de tes règles ...

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

situé avant me chiffonne un peut ... j'ai comme l'impression que ça redirige avant ton traitement. De plus c'est ce que j'utilise pour les 404 (de mémoire) donc je comprend pas trop pourquoi c'est avant. Sinon l'oublie du point était une erreur de ma part en effet.

Si tu n'a que des news dans ce dossier tu pourrait simplifier avec un truc du genre :

RewriteRule ^new/actualites/(.*) /new/actualites.php?param=$1 [L]
Et ensuite tu fais le trie en php dans ton script sur la variable 'param'. (en simplifiant c'est parfois plus simple :D (mode idée conne))
 
WRInaute impliqué
ton fichier actualites.php est vraiment dans le répertoire new ?
Si oui et si tu essayais de le mettre à la racine du site et de virer le new ?
 
WRInaute discret
Hello,

J’avais ajouté ces 2 lignes à force de chercher des solutions. J’avais vu ça sur un forum.

Mais même si j’enlève ces 2 lignes, j’ai toujours un problème de paramètre.

Comme je disais, si je fais :

Code:
echo 'test paramètre<br />alias: '.$_GET['alias'];
	
echo '<br /><br />test paramètre<br />cat : '.$_GET['cat'];

Je n’obtiens rien sur mon url réécrite. Alors que je récupère bien mes paramètres avec l’url de base.

J’ai un foreach dans mon php qui plante car si je fais
Code:
var_dump($allData);
, ça me revoit NULL, normal pas de paramètre.

Mais ma page s’affiche bien, les css, les includes, le javascript et les images sont là par exemple, mais j’ai une belle erreur php à cause de l’absence de paramètres.

Je vais regarder ton autre solution.

Mais c’est bizarre que ça fonctionne en local et chez ovh, et pas chez 1&1…
 
WRInaute discret
bgdc a dit:
ton fichier actualites.php est vraiment dans le répertoire new ??

Oui, il est dans mon-site.com/new

bgdc a dit:
Si oui et si tu essayais de le mettre à la racine du site et de virer le new ?

J'ai testé et pareil. Je pensais aussi à un problème de sous répertoire car j'ai eu quelques galères en local avec ça mais que j'ai réglé (c'était pas des problèmes de récupération de paramètres mais des 404).
 
WRInaute discret
Hello,

J’ai fait plein de tests et j’ai l’impression que ma règle fonctionne mal avec les répertoires.

Cette fois, j’ai mis le .htacess à la racine du serveur et non pas dans le dossier /new/

(mon site n’est pas à la racine car il y a encore l’ancienne version en production)

Ne fonctionne pas :

Code:
RewriteRule  ^new/actualites/([0-9]*)-(.*)\.php$  /new/actualites.php?cat=$1&alias=$2 [L]

url testée:
http://www.mon-site.com/new/actualites/5-tous.php

(dans ce cas, la page est trouvée mais il n’y pas de récupération des paramètres passés dans l’url)

fonctionne :

Code:
RewriteRule  ^([0-9]*)-(.*)\.php$  /new/actualites.php?cat=$1&alias=$2 [L]

url testée:

http://www.mon-site.com/5-tous.php

Vous avez une idées ?
 
WRInaute discret
Hello,

Après avoir perdu une journée sur un simple problème d’url rewritting chez 1&1, j’ai enfin trouvé la solution :

Il faut ajouter –MultiViews dans le .htaccess

Code:
Options +FollowSymLinks -MultiViews
 
Discussions similaires
Haut