nerique Posté 23 Juillet 2007 Posté 23 Juillet 2007 Bonjour, l'URL rewriting est un sous-domaine qui a été abordé des milliers de fois sur Webmaster-Hub, aussi croyez bien que j'ai recherché avant d'en arriver à poster mon problème, mais je suis à bout... Merci donc aux personnes qui pourront m'aider. Dans mon htaccess, je fais deux choses : Je redirige les gens qui ont tapé http://monsite.net vers http://www.monsite.net Et je cumule cela avec la redirection d'URL. Et celle-ci du coup ne fonctionne pas. Voici mon htaccess: Options +FollowSymlinks RewriteEngine on# URL sans wwwRewriteCond %{HTTP_HOST} ^napload\.net$ [NC]RewriteRule ^(.*) [url="http://www.napload.net/$1"]http://www.napload.net/$1[/url] [QSA,L,R=301]# PAGE AVEC CHIFFRE AVEC DESCRIPTION :RewriteRule ^([a-zA-Z0-9]+)-([0-9]+)-([\-a-zA-Z0-9_]+)\.html$ /$1.php?id=$2&fid=$2 [NC,L]# PAGE AVEC LETTRE AVEC DESCRIPTION :RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z]{1})-([\-a-zA-Z0-9]+)\.html$ /$1.php?l=$2 [NC,L]# PAGE AVEC LETTRE SANS DESCRIPTION :RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z]{1})\.html$ /$1.php?l=$2 [NC,L]# PAGE AVEC MODE :RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z]+)\.html$ /$1.php?mode=$2 [NC,L]# PAGE SANS RIEN :RewriteRule ^([a-zA-Z0-9]+)-([\-a-zA-Z0-9]*)\.html$ /$1.php [NC,L]# PAGE :RewriteRule ^([a-zA-Z0-9]+)\.html$ /$1.php [NC,L] Merci à ceux qui pourront m'expliquer ou est mon erreur.
Dan Posté 23 Juillet 2007 Posté 23 Juillet 2007 Je réécrirais la première règle ainsi: RewriteCond %{HTTP_HOST} ^napload.net$RewriteRule /?(.*) http://www.napload.net/$1 [R=301,L] Le flag QSA ne sert à rien dans le cas de réécritures externes. Et pour les autres, comme je ne sais pas si tes URLs commencent par un / ou non (dépend de la config), j'éviterais le ^ en début du premier argument ou rendrais le / facultatif, comme ceci: RewriteRule ^/?([a-zA-Z0-9]+)-([0-9]+)-([\-a-zA-Z0-9_]+)\.html$ /$1.php?id=$2&fid=$2 [NC,L] Ceci est valable chez OVH, mais pour les autres il faut aussi supprimer le / devant le $1 du second argument. RewriteRule ^/?([a-zA-Z0-9]+)-([0-9]+)-([\-a-zA-Z0-9_]+)\.html$ $1.php?id=$2&fid=$2 [NC,L] Dan
nerique Posté 23 Juillet 2007 Auteur Posté 23 Juillet 2007 Bonjour Dan, et merci pour ta réponse. j'ai tenté ce que tu viens de me donner, et, malheureusement, ca ne fonctionne pas mieux. Je m'explique en terme de pages : http://www.napload.net fonctionne http://napload.net fonctionne http://www.napload.net/news.html fonctionne http://napload.net/news.html ne fonctionne pas Donc après la modif que tu m'as donné, voici le code : Options +FollowSymlinks RewriteEngine on# URL sans wwwRewriteCond %{HTTP_HOST} ^napload.net$RewriteRule /?(.*) http://www.napload.net/$1 [R=301,L]# PAGE AVEC CHIFFRE AVEC DESCRIPTION :RewriteRule ^/?([a-zA-Z0-9]+)-([0-9]+)-([\-a-zA-Z0-9_]+)\.html$ /$1.php?id=$2&fid=$2 [NC,L]# PAGE AVEC LETTRE AVEC DESCRIPTION :RewriteRule ^/?([a-zA-Z0-9]+)-([a-zA-Z]{1})-([\-a-zA-Z0-9]+)\.html$ /$1.php?l=$2 [NC,L]# PAGE AVEC LETTRE SANS DESCRIPTION :RewriteRule ^/?([a-zA-Z0-9]+)-([a-zA-Z]{1})\.html$ /$1.php?l=$2 [NC,L]# PAGE AVEC MODE :RewriteRule ^/?([a-zA-Z0-9]+)-([a-zA-Z]+)\.html$ /$1.php?mode=$2 [NC,L]# PAGE SANS RIEN :RewriteRule ^/?([a-zA-Z0-9]+)-([\-a-zA-Z0-9]*)\.html$ /$1.php [NC,L]# PAGE :RewriteRule ^/?([a-zA-Z0-9]+)\.html$ /$1.php [NC,L]
Dan Posté 23 Juillet 2007 Posté 23 Juillet 2007 Pour moi, http://napload.net ne redirige pas du tout vers http://www.napload.net
nerique Posté 23 Juillet 2007 Auteur Posté 23 Juillet 2007 Donc selon toi, c'est déjà cette première redirection qui ne fonctionne pas ?
nerique Posté 23 Juillet 2007 Auteur Posté 23 Juillet 2007 J'ai bien étudié mon serveur (serveur dédié) et je ne comprends... Comment cette première directive peut-elle ne pas fonctionner alors que les suivantes passent ? j'en perd mon latin pour tout vous dire.
nerique Posté 24 Juillet 2007 Auteur Posté 24 Juillet 2007 Personne n'a la moindre idée alors ? Désolé de relancer, mais je l'ai vraiment dans l'os :s et j'ai beau chercher, je ne trouve toujours pas
rdd Posté 25 Juillet 2007 Posté 25 Juillet 2007 Bonjour, Si j'ai bien compris ton probleme, tu cherches a renvoyer tout ce qui n'est pas http://www.napload.net sur http://www.napload.net. Pourquoi alors ne pas essayer dans cette optique. En lieu et place de : RewriteCond %{HTTP_HOST} ^napload.net$RewriteRule /?(.*) [url="http://www.napload.net/$1"]http://www.napload.net/$1[/url] [R=301,L] Essaye plutot : RewriteCond %{HTTP_HOST} !^www.napload.net$ RewriteRule ^/?(.*) [url="http://www.napload.net/$1"]http://www.napload.net/$1[/url] [L,R=301] Cordialement, RDD.
nerique Posté 25 Juillet 2007 Auteur Posté 25 Juillet 2007 (modifié) Bonjour RDD, effectivement, c'est plus logique, et ca me permettra de gérer également le cas www.napload.com Malheureusement, je viens de faire la modif, et ca ne fonctionne toujours pas. C'est quand même fou non ? Les instructions du dessous fonctionnent et pas celle là. Je deviens chèvre. Peut-être y a t'il quelquechose de particulier à mettre en place sur un serveur pour gérer les RewriteCond en plus des RewriteRule ? Quelqu'un saurait ? Modifié 25 Juillet 2007 par nerique
rdd Posté 25 Juillet 2007 Posté 25 Juillet 2007 Re, Je passerai par une phase de debug pour voir deja d'ou viens le pb. Essaye de placer ton .htaccess avec uniquement : Options +FollowSymlinksRewriteEngine onRewriteCond %{HTTP_HOST} !^www.napload.net$RewriteRule ^/?(.*) [url="http://www.napload.net/$1"]http://www.napload.net/$1[/url] [L,R=301] Si cela ne fonctionne pas, donne plus d'info sur ton serveur dedie : apache?, quelle version?, utilisation des vhosts?, ... Si tu utilises apache, paste uniquement ta conf pour ce domaine (en pv si trop longue). RDD
nerique Posté 25 Juillet 2007 Auteur Posté 25 Juillet 2007 (modifié) Alors cette phase de debug n'a déjà, elle pas fonctionné.... j'utilise Apache 2 Server version: Apache/2.0.54 Server built: Jul 28 2006 09:04:55 et la conf apache du vhost : <VirtualHost *> ServerName www.napload.net ServerAlias *.napload.net DocumentRoot /data0/web/napload php_value include_path ".:/data0/includes/includes-php2:/data0/includes/includes-xsl:/data0/web/napload/includes" ScriptAlias /cgi-bin/ /data0/web/napload/cgi-bin/ </VirtualHost> Ca te parle ? Modifié 25 Juillet 2007 par nerique
rdd Posté 26 Juillet 2007 Posté 26 Juillet 2007 OK, En effet il manque quelques lignes essentielles. Je reprend donc ta conf en apportant les modifs : <VirtualHost *>ServerName www.napload.netServerAlias *.napload.net[b]RewriteEngine On[/b]DocumentRoot /data0/web/napload[b]AllowOverride All[/b]php_value include_path ".:/data0/includes/includes-php2:/data0/includes/includes-xsl:/data0/web/napload/includes"ScriptAlias /cgi-bin/ /data0/web/napload/cgi-bin/</VirtualHost> Le RewriteEngineOn que je met la n'est je pense pas indispensable mais je n'ai personnellement jamais essaye sans. Par contre la regle primordiale, c'est bel et bien le AllowOverride All qui lui permet la reecriture d'url. Essaye de rajouter ces 2 lignes et tiens nous au courant.
nerique Posté 26 Juillet 2007 Auteur Posté 26 Juillet 2007 Hello ! Quand je met le AllowOverride dans le vhost, ca me met une erreur me disant qu'il n'a rien à faire ici. Là je parle d'un vhost dans un .conf inclus lors du chargement de apache
rdd Posté 26 Juillet 2007 Posté 26 Juillet 2007 Salut, OK, je comprend mieux alors (je n'utilisais pas ta methode de conf pour les vhosts). Voici comment j'aurais creer mon .conf pour ton site. <VirtualHost *> ServerName napload.net ServerAlias *.napload.net ServerAdmin webmaster_AT_napload.net RewriteEngine On DocumentRoot /data0/web/napload <Directory /data0/web/napload> Options FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> #Utile si tu as plusieurs vhosts, ca creer un fichier log par vhost # Dans ce fichier on log les erreurs ErrorLog /var/log/apache2/error-napload.log # Le niveau de log LogLevel warn # Ici on log les acces CustomLog /var/log/apache2/access-napload.log combined # Ce n'est pas obligatoire, ca permet juste de ne pas afficher les infos sur ton serv # si tu n'as pas personnaliser tes erreurs (404, 500...) ServerSignature Off</VirtualHost> En esperant repondre a ta question. RDD
nerique Posté 26 Juillet 2007 Auteur Posté 26 Juillet 2007 J'ai fait ce que tu viens de me dire... sans succès. Mais merci vraiment à toi pour tout ce que tu essayes
nerique Posté 30 Juillet 2007 Auteur Posté 30 Juillet 2007 Hello à tous ! Bon alors j'ai enfin trouvé le problème. En fait, dans le doute, j'ai fait un a2enmod rewrite pour installer le mod_rewrite proprement. Ensuite, il faut éditer le fichier /etc/apache2/sites-enabled/LE_FICHIEr_DE_VOTRE_SITE Et changer les directoves AllowOverride à All. Celles-des .conf ne suffisait pas.... Voilà, merci encore pour votre aide.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant