Problème htaccess avec 1and1

Nouveau WRInaute
J'ai le .htaccess suivant :
Code:
# evite au serveur de vouloir trouver un fichier dont le nom est proche de la demande
CheckSpelling off

# On suit les liens symboliques
Options +FollowSymlinks

# Activation du mod rewrite d'Apache
RewriteEngine On

# obligatoire pour 1and1
RewriteBase /test/

AddType x-mapp-php5 .php

###############################################
# Redirection des urls de maniere plus propre #
###############################################

# Pour eviter de circuler dans certains repertoires on envoi vers un FORBIDDEN
RewriteRule ^librairies/.*$ - [NC,F,L]
RewriteRule ^modules/.*$ - [NC,F,L]
RewriteRule ^tables/.*$ - [NC,F,L]
RewriteRule ^temp/.*$ - [NC,F,L]

RewriteRule ^index\.html$ index.php [L]
RewriteRule ^telechargement-(.+)$ telechargement.php?key=$1 [L]
RewriteRule ^telechargement\.html$ index.php [L]
RewriteRule ^articles\.html$ articles.php [L]
RewriteRule ^articles/(([^/]*)/([^/]*)(/([^/]*)/([^/]*)(/([^/]*)/([^/]*))?)?)\.html$ articles.php?$2=$3&$5=$6&$8=$9 [L]
RewriteRule ^articles_commentaires/(([^/]*)/([^/]*)(/([^/]*)/([^/]*)(/([^/]*)/([^/]*))?)?)?\.html$ articles_commentaires.php?$2=$3&$5=$6&$8=$9 [L]
RewriteRule ^page/([0-9]+)\.html?$ page.php?id=$1 [L]
RewriteRule ^creation-compte\.html$ connexion.php [L]
RewriteRule ^connexion\.html$ connexion.php?action=connexion [L]
RewriteRule ^deconnexion\.html$ index.php?connection_destroy=1 [L]

####################################
# Gestion personnalise des erreurs #
####################################

# Si le fichier n'existe pas et que le repertoire n'existe pas non plus, executer les regles suivantes
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -d

ErrorDocument 400 /site_base/erreur-400.html
ErrorDocument 401 /site_base/erreur-401.html
ErrorDocument 404 /site_base/erreur-404.html
ErrorDocument 405 /site_base/erreur-405.html
ErrorDocument 500 /site_base/erreur-500.html
RewriteRule ^erreur-([0-9]{3})\.html$ erreur.php?id=$1 [L]
En local tous marche bien, y compris quand je demande l'adresse :
http://127.0.0.1/test/articles/id/1.html
qui renvoi bien vers le fichier articles.html avec les arguments qui vont bien.
Dés que je place chez 1and1 et que j'essaye d'accéder à :
http://mon_site/test/articles/id/1.html
j'ai le droit à une erreur 404, j'ai testé plusieurs expressions différentes mais rien à faire ... j'ai fais le tour de la doc officiel d'apache et je trouve rien :(

Quelqu'un serait il comment remédier au soucis ?

J'ai un autre soucis sur la gestion des erreurs, j'ai lu leur Faq et j'ai modifié ma gestion des erreurs en conséquent, en local ca marche par contre chez eux ca n'a pas l'air d'être pris en compte ... :(

La aussi quelqu'un aurait il une idée du comment faire ?
 
WRInaute passionné
essaye en remplaçant les lignes :
Code:
# Si le fichier n'existe pas et que le repertoire n'existe pas non plus, executer les regles suivantes
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -d

ErrorDocument 400 /site_base/erreur-400.html
ErrorDocument 401 /site_base/erreur-401.html
ErrorDocument 404 /site_base/erreur-404.html
ErrorDocument 405 /site_base/erreur-405.html
ErrorDocument 500 /site_base/erreur-500.html
RewriteRule ^erreur-([0-9]{3})\.html$ erreur.php?id=$1 [L]
par :
Code:
ErrorDocument 400 /site_base/erreur.php?id=400
ErrorDocument 401 /site_base/erreur.php?id=401
ErrorDocument 404 /site_base/erreur.php?id=404
ErrorDocument 405 /site_base/erreur.php?id=405
ErrorDocument 500 /site_base/erreur.php?id=500
 
Nouveau WRInaute
Oui c'est ce que j'avais fais et qui marchait en local mais j'étais parti sur l'autre idée après avoir lu leur Faq (qui précise qu'il ne faut que du htm ou html ...)
 
WRInaute passionné
je ne sais pas ou tu as vu ça?

en plus le RewriteBase n'est pas obligatoire chez 1and1 : il n'y en a pas dans mon .htaccess par contre je mets le chemin complet pour la partie droite des RewriteRule.
 
WRInaute occasionnel
Hum il faut pas par hazar le / ?

Code:
RewriteRule ^telechargement-(.+)$ telechargement.php?key=$1 [L]
- >
Code:
RewriteRule ^telechargement-(.+)$ /telechargement.php?key=$1 [L]

Il se trouve bien à la racine de ton hébérgement le htaccess ?
 
Nouveau WRInaute
J'ai essayé avec ou sans /, le fichier htaccess est dans le répertoire (ce qui explique le RewriteBase obligatoire d'après leur support ...).

Pour la Faq il s'agit de ce lien :
http://faq.1and1.fr/hebergements/htaccess/10.html
(d'ailleurs qui en dernière ligne de l'exemple, utilise quelque chose que je ne comprend pas (et que je ne veux pas mettre utilisant PHP5 sur leur serveur qui nécessite la AddType))

(il faut savoir que la Faq a était totalement refaite il y a peu de temps donc beaucoup plus d'infons qu'avant)
 
Nouveau WRInaute
Alors je viens de tester quelque chose qui me titillé :
Code:
RewriteRule ^articles-(([^-]*)-([^-]*)(-([^-]*)-([^-]*)(-([^-]*)-([^-]*))?)?)\.html$ articles.php?$2=$3&$5=$6&$8=$9 [L]
Dans ce cas, si je tape la même adresse en remplacant les / par des -, la redirection est faite correctement. Du coup j'en arrive à la conclusion qu'il y a une configuration sur le serveur qui interprète les / comme étant peut-être des répertoires ou un signe spécial signifiant quelque chose d'autre. Sauf que dans la doc officiel (que je trouve d'ailleurs fort mal foutu) je ne vois pas qu'est ce qui pourrait permettre ca et comment le modifier :(

Si un pro du htaccess passe par la, je lui serait gré de partager avec nous ses connaissances :)
 
WRInaute passionné
si ton fichier articles.php est accessible avec l'adresse -http://www.tonsite.fr/test/articles.php je te conseil d'écrire sous cette forme :
Code:
RewriteRule ^articles/(([^/]*)/([^/]*)(/([^/]*)/([^/]*)(/([^/]*)/([^/]*))?)?)\.html$ /test/articles.php?$2=$3&$5=$6&$8=$9 [L]
ça doit marcher pareil avec un - ou un /
je te conseil aussi de dédoubler les règles pour éviter les motifs facultatifs.
 
Nouveau WRInaute
Je pensais que c'étais plus intéressant niveau performance que d'en faire 3 (1 pour chaque pair).

J'ai test avec et sans /test/, même en mettant une url complète, et ca en a rien à faire si c'est des / :(
 
WRInaute passionné
c'est peut-être plus performant et plus compacte mais c'est vraiment pas lisible.
essaye avec une version simple :
Code:
RewriteRule ^articles/([^/]*)/([^/]*)\.html$ /test/articles.php?$1=$2 [L]
je l'ai testé chez moi et ça marche. si ca marche tu ajoutes les deux autre règles :
Code:
RewriteRule ^articles/([^/]*)/([^/]*)/([^/]*)/([^/]*)\.html$ /test/articles.php?$1=$2&$3=$4 [L]
RewriteRule ^articles/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)\.html$ /test/articles.php?$1=$2&$3=$4&$5=$6 [L]
 
WRInaute impliqué
Une question qui n'a rien a voir: comment tu fais pour que ça marche en local avec cette ligne:
Code:
AddType x-mapp-php5 .php

Je suis toujours obligé de la commenter en local.
 
Discussions similaires
Haut