regle url rewriting simple

Nouveau WRInaute
Bonjour toutes et tous,
Je suis totalement débutant en url rewriting.
j'ai pas le temps de potasser les tutos, j'ai une urgence à mettre en ligne...

mes urls sont index.php, index.php?page=1, index.php?page=2 etc.
Pouvez-vous me donner une eègle htaccess pour obtenir
index.html, page1.html ........
Je ne sais pas si c'est possible avec index tout court
J'ai essayé çà => marche pas. Apache est OK

# On active la réécriture d'URL
RewriteEngine on

# On définit une seule règle de réécriture
RewriteRule (.*)\.html index.php?page=$1 [L]

Merci du coup de main
 
WRInaute accro
Bonjour
La règle de réécriture semble bonne; quand tu dis "marche pas", c'est à dire ? Tu as une erreur 500 ?
Avec cette règle en place, que se passe-t-il lorsque tu appelles directement page1.html ?
 
Nouveau WRInaute
ben non j'ai pas d'erreur. ça ne change rien ! Mes urls restent le mêmes et appellent mes pages.
Page1.html ouvre index.php page2.html idem page X ... etc
 
Nouveau WRInaute
Je viens de compléter la réponse.
Renvoi d'erreur ???? sais pas !
page xxx . html ouvre index.php quel que soit le chiffre !
 
Nouveau WRInaute
RESOLU

j'ai trouvé un générateur ;-)

Options +FollowSymLinks
RewriteEngine on
RewriteRule index-page-(.*)\.html$ index.php?page=$1

marche avec des URLS du genre index-page-1.html
Tous chiffres appellent les bonnes pages

Merci !
Je vais avoir le temps de potasser maintenant !
 
Nouveau WRInaute
une petite dernière pour la route !
Mon hébergeur passe des règles différentes : il faut mettre l'url complète http://..... dans la deuxième partie
http://...../index.php?page=$1
mais ça fonctionne.
par contre j'ai toujours mes anciennes URL dans la barre d'adresse index.php?page=2
plus ça va moins je comprends !
 
WRInaute passionné
Bonjour,

Si tu as index.php?page=1 et que tu veux page1.html

C'est ce code qu'il faut :
Code:
RewriteRule page([0-9]+)\.html$ index.php?page=$1

Rod
 
WRInaute accro
La réécriture d'URL ne provoque pas de redirection; si tu appelles index.php?page=2, si tu n'as pas prévu de mécanisme de redirection 301, ton URL ne changera pas.

Par contre, si en appelant page-2.html tu es redirigé vers index.php?page=2, c'est qu'il y a un problème quelquepart.
 
Nouveau WRInaute
Vous êtes sympa.
Oui javais corrigé pour avoir page1.html
ça marche au poil en local, c'est chez l'hébergeur que les urls s'affichent comme avant. (PHPNET.ORG)
301 ? logique effectivement. Je fais comment ?
Je suis vraiment nul !

Par contre, si en appelant page-2.html tu es redirigé vers index.php?page=2, c'est qu'il y a un problème quelquepart.

C'est le cas ! !
 
WRInaute accro
Pour ton problème, je sèche, a voir avec ton hébergeur pourquoi ta règle de réécriture te fait une redirection ...

pour les redirections 301, mieux vaut que tu le fasses en PHP :

- check de l'URL appelée
- si l'URL appelée n'est pas l'URL souhaitée, redirection 301 vers l'URL souhaitée via la fonction php header();
 
Nouveau WRInaute
merci
Je vais voir l'hébergeur.
301 en PHP je vais y arriver, je maitrise mieux.
m'enfin si ça marche en local, c'est bizarre
 
Nouveau WRInaute
Bonjour,

Il ne suffit pas de mettre un / au lieu du http complet (chez 1&1, c'est ce qu'il faut faire) ?
Et il manque l'indication d'une redirection 301.

Chez 1&1, si tu as 2 sites A et B et que A redirige de façon permanente vers B, selon le paramétrage de ta redirection, la barre d'url affichera l'url saisie ou celle de destination.

Donc, ça pourrait donner ça :

Code:
Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteRule ^page([0-9]+)\.html$ /index.php?page=$1 [QSA,L,R=301]
 
WRInaute passionné
Pour les 301, soit tu utilise les RedirectPermanent, soit si tu doit d'avoir réécrire, tu ajoute les tag qui vont bien [R=301]
On peut aussi le faire direct en php sur la page d'arrivée.

Pour ton soucis de redirection vers l'url avec critère, oui, c’est pas normal.
Tu réécris, ça veut dire quoi :
Le navigateur demande la page page1.html au serveur. Lui, avant de l'envoyer, il interprète le htaccess qui lui dit cette page, tu la connais sous le nom index.php?page=1
Il l'affiche, mais l'url ne change pas dans le nav.

Rod
 
Discussions similaires
Haut