|
|
|
|
||||||
| fr.comp.info.serveurs Administration de serveurs WWW. |
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bonjour,
Je rencontre un petit problème pour effectuer une redirection d'URL avec Apache. Je souhaite faire : http://www.monsite.com/rep1/rep2/page.htm => http://www.monsite.com/page.php?rep1/rep2/page et http://www.monsite.com/rep1/rep2/ => http://www.monsite.com/page.php?rep1/rep2/index J'utilise pour cela, dans le fichier << .htaccess >> : Options +FollowSymlinks RewriteEngine on RewriteRule ^www/(.*)\.htm$ /page.php?$1 [L] RewriteRule ^www/(.*)/$ /page.php?$1/index [L] RewriteCond %{REQUEST_URI} !/$ RewriteCond %{REQUEST_URI} !\. RewriteRule ^www/(.*)$ /page.php?$1/index [L] J'ai cependant une petite question : Pourquoi un simple RewriteRule ^www/(.*) /page.php?$1 [L] ne marche-t-il pas pour envoyer directement tous les paramètres à ma page PHP qui se chargerait ensuite de traiter l'argument ? Cela ne passe en effet pas (hébergement mutualisé OVH). Ce serait bien commode pour filtrer toutes les extensions htm/html/... d'un seul coup. D'avance merci pour vos réponses. Cordialement, Iulius |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Le 01/08/2005 09:17, Iulius a écrit :
> Bonjour, > > Je rencontre un petit problème pour effectuer une > redirection d'URL avec Apache. > > Je souhaite faire : > > http://www.monsite.com/rep1/rep2/page.htm > => > http://www.monsite.com/page.php?rep1/rep2/page > > et > > http://www.monsite.com/rep1/rep2/ > => > http://www.monsite.com/page.php?rep1/rep2/index > > > > J'utilise pour cela, dans le fichier << .htaccess >> : > > Options +FollowSymlinks > RewriteEngine on > > RewriteRule ^www/(.*)\.htm$ /page.php?$1 [L] > RewriteRule ^www/(.*)/$ /page.php?$1/index [L] > RewriteCond %{REQUEST_URI} !/$ > RewriteCond %{REQUEST_URI} !\. > RewriteRule ^www/(.*)$ /page.php?$1/index [L] > > J'ai un doute sur cette écriture. Ca ne serait pas plutot RewriteRule ^www.monsite.com/(.*)\.htm$ /page.php?$1 [L] Ensuite, il faut prendre l'habitude de ne pas mettre d'extension dans les noms des pages, page au lieu de page.htm, etc... Ca permet de ne pas avoir besoin de faire de réécritures phénoménales en cas de changement de moteur de création de page (p/ex les faire en php,...) Ensuite, sauf indication contraire dans les .htaccess, le fichier par défaut d'un répertoire est index, donc pas besoin de le mettre dans l'URL. -- Leonick http://www.champignytriathlon.org Champigny Triathlon : le site du multisport en Ile de France |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
Le Mon, 01 Aug 2005 16:56:53 +0000, Leonick a écrit :
> J'ai un doute sur cette écriture. > Ca ne serait pas plutot RewriteRule ^www.monsite.com/(.*)\.htm$ > /page.php?$1 [L] Non, mod_rewrite ne traite que la partie chemin local de l'URL, il n'y a pas le nom du site. -- Patrick Mevzek . . . . . . Dot and Co (Paris, France) <http://www.dotandco.net/> <http://www.dotandco.com/> Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news> |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Le Mon, 01 Aug 2005 11:17:57 +0200, Iulius a écrit :
> Pourquoi un simple > > RewriteRule ^www/(.*) /page.php?$1 [L] > > ne marche-t-il pas pour envoyer directement tous les paramètres > à ma page PHP qui se chargerait ensuite de traiter l'argument ? Il manque probablement un QSA comme flag, donc [L,QSA] au lieu de [L] et d'autre part la règle de match est étrange, vu qu'il n'y a pas de www dans l'URL > Cela ne passe en effet pas (hébergement mutualisé OVH). Dans ce cas, monter le niveau de log de mod_rewrite et regarder ce qu'il dit. -- Patrick Mevzek . . . . . . Dot and Co (Paris, France) <http://www.dotandco.net/> <http://www.dotandco.com/> Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news> |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Le 01/08/2005 17:06, Patrick Mevzek a écrit :
> Le Mon, 01 Aug 2005 16:56:53 +0000, Leonick a écrit : > >>J'ai un doute sur cette écriture. >>Ca ne serait pas plutot RewriteRule ^www.monsite.com/(.*)\.htm$ >>/page.php?$1 [L] > > > Non, mod_rewrite ne traite que la partie chemin local de l'URL, il n'y a > pas le nom du site. > Justement, que vient faite le www dans sa réécriture ? -- Leonick http://www.champignytriathlon.org Champigny Triathlon : le site du multisport en Ile de France |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
En réponse à Leonick :
>> RewriteRule ^www/(.*)\.htm$ /page.php?$1 [L] >> > J'ai un doute sur cette écriture. > Ca ne serait pas plutot RewriteRule ^www.monsite.com/(.*)\.htm$ > /page.php?$1 [L] Ben ça marche bien avec www/ en fait. Je n'ai pas un serveur dédié mais suis sur un mutualisé chez OVH. Le chemin des pages à la racine du site est : /home/*login*/www/ Et c'est bien le << www/ >> qui est envoyé d'abord, comme j'ai pu le constater avec : RewriteRule ^(.*)\.htm$ /page.php?$1 [L] où le script php écrit juste dans la page la variable passée. > Ensuite, il faut prendre l'habitude de ne pas mettre d'extension dans > les noms des pages, page au lieu de page.htm, etc... C'est-à-dire ? Que tout soit considéré comme un répertoire et aille vers le fichier << index.htm >> directement ? Sinon, j'ai réussi à résoudre le problème ainsi : ReWriteRule .*\.(gif|png|jpg|pdf|php|css|ico|txt)$ - [NC,L] RewriteRule ^www/(.*) /page.php?$1 [NC,L] Ça passe nickel maintenant (sans avoir besoin de mettre un .htm). Je ne sais pourquoi c'est mieux. Peut-être parce que le renvoi vers la page php était lui-même réécrit par Apache en boucle ? En tout cas, je vous remercie pour les conseils que Patrick et vous m'avez donnés sur le forum. Iulius |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
Le 04/08/2005 07:28, Iulius a écrit :
> En réponse à Leonick : > >>> RewriteRule ^www/(.*)\.htm$ /page.php?$1 [L] >>> >> J'ai un doute sur cette écriture. >> Ca ne serait pas plutot RewriteRule ^www.monsite.com/(.*)\.htm$ >> /page.php?$1 [L] > > > Ben ça marche bien avec www/ en fait. Je n'ai pas un serveur dédié > mais suis sur un mutualisé chez OVH. Le chemin des pages à la racine > du site est : > /home/*login*/www/ Oui, mais ce chemin n'est valable que dans les scripts php sur le serveur et partiellement (le www) via ftp. Pour l'utilisateur en http:, il ne verra pas le /www/ >> Ensuite, il faut prendre l'habitude de ne pas mettre d'extension dans >> les noms des pages, page au lieu de page.htm, etc... > > > C'est-à-dire ? > Que tout soit considéré comme un répertoire et aille vers le fichier > << index.htm >> directement ? Non,par défaut, il recherche les extensions php, html, ... donc si on veut utiliser par exemple php5, chez ovh il faut utiliser l'extension php5 (le php4 n'utilisant que l'extension php), on n'aura pas à réécrire tous ses liens dans les pages, et surtout les liens indexés précédemment par les moteurs de recherches continueront d'être fonctionnels. > -- Leonick http://www.champignytriathlon.org Champigny Triathlon : le site du multisport en Ile de France |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
En réponse à Leonick :
> Oui, mais ce chemin n'est valable que dans les scripts php sur le > serveur et partiellement (le www) via ftp. > Pour l'utilisateur en http:, il ne verra pas le /www/ Pourtant, si je mets dans mon << .htaccess >> : RewriteRule ^(.*) /test.php?page=$1 [NC,L] et que je fais : <?php echo $_GET['page']; ?> j'obtiens : www/page-demandée Je crois savoir d'où cela vient : mon << .htaccess >> est à la racine du site, c'est-à-dire juste à << /home/login/.htaccess >>. C'est peut-être pour cela qu'il rajoute le << www >>. > on n'aura pas à réécrire tous ses liens dans les pages, et surtout les liens > indexés précédemment par les moteurs de recherches continueront d'être > fonctionnels. Pour faire encore plus simple, ma première ligne est : <?php $page = preg_replace("/\.(.*)/", "", $_GET['page']); ?> Comme cela, exit le problème d'extension. Tout passe très bien et le référencement sera toujours bon. Les liens que je fais dans mes pages sont de toute façon terminés par << .htm >> ; mais comme cela n'est plus regardé lors de la redirection, c'est bon. Iulius |
|
![]() |
| Outils de la discussion | |
|
|