.htaccess url rewrite Enlever les parametres

Nouveau WRInaute
Salut à tous, je suis nouveau sur ce forum.

Je programme depuis quelques années et je me suis intéressé au .htaccess.
Je n'y comprends rien ! :(

J'ai l'url de mon site qui s'affiche comme ça : www.monsite.com?categ=1
Et j'aimerais simplement que le visiteur voit : www.monsite.com

J'espere que vous saurez m'aider :)
 
WRInaute impliqué
Je ne sais pas quelle genre de redirection tu veux, mais voici le principe :

Code:
RewriteRule .* http://www.monsite.com? [L,R=301]
En spécifiant "?" sans rien derrière, cela enlève les paramètres d'URL.
 
Nouveau WRInaute
Une redirection permanente (ça se dit ?) serait top !

J'ai essayé ton code et ça fonctionne ! Merci ;)

Cependant j'au un message d'erreur qui me dit que le redirection ne se termine pas correctement
 
WRInaute impliqué
C'est parce que ma redirection est une boucle infinie ;)

Essaie :
Code:
RewriteCond %{QUERY_STRING} ^categ=1$
RewriteRule .* http://www.monsite.com? [L,R=301]
Ceci crée une redirection permanente seulement quand categ=1 est présent dans les paramètres d'URL.
 
Nouveau WRInaute
Une dernière petite question :)

Au lieu de : www.monsite.com/index.php?categ=1
J'ai : www.monsite.com

Nickel !

Mais si je veux :
www.monsite.com/accueil (pour categ=1)
www.monsite.com/contact (pour categ=2)
...

c'est possible ?
 
WRInaute impliqué
Bin oui :
Code:
RewriteCond %{QUERY_STRING} ^categ=1$
RewriteRule .* http://www.monsite.com/accueil? [L,R=301]

RewriteCond %{QUERY_STRING} ^categ=2$
RewriteRule .* http://www.monsite.com/contact? [L,R=301]
 
Nouveau WRInaute
Oui c'est ce que je me disais.
Mais il faut alors créer un répertoire 'accueil' (par exemple) à la racine de mon site et mettre un nouvel index à l'intérieur ?

Edit : Parceque là j'ai une erreure qui me dit que '/accueil' est introuvable. Normal
 
WRInaute impliqué
Qu'est-ce que tu veux faire exactement ? Parce que j'ai l'impression que tu y va à l'envers.
Quand l'adresse est /accueil, tu veux rediriger vers le contenu de http://www.monsite.com?categ=1 ?
Dans ce cas, il faut plutôt faire ça :
Code:
RewriteRule ^accueil$ /?categ=1 [L]
Ensuite, tu modifies toutes tes liens ?categ=1 en /accueil.
 
Nouveau WRInaute
Oui je crois que je me mélange les pinceaux :?

Oui je veux que : "www.monsite.com/accueil" affiche le contenu de "www.monsite.com/index.php?categ=1"

Mais le répertoire 'accueil' est "virtuel". Il n'existe pas à la racine de mon site...
 
Nouveau WRInaute
Ca y est ça fonctionne ! Merci beaucoup :wink:
Il est possible de gérer les pages d'erreur ?

Admettons que "www.monsite.com/accueil" est une adresse qui fonctionne.
Si le client tape "www.monsite.com/acuel" peut t-on créer notre prorpre page d'erreur ? (Ce serait mieu que d'avoir l'erreur du nav)
 
WRInaute impliqué
Bah par exemple, tu peux faire ceci :
Code:
RewriteRule ^accueil$ /?categ=1 [L]

# autres règles …

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [NC,L]

RewriteRule .* erreur404.php [L]

Les RewriteCond suivit du RewriteRule permet de stocker les redirections pour tous les fichiers ou dossiers physiques (image, CSS, etc.).
Si l'URL ne correspond à aucune règle de réécriture et n'est pas un fichier physique, on redirige vers erreur404.php (tu met ce que tu veux).
Ensuite, pour dire au navigateur (ou robot) que c'est une page non trouvée, il faut envoyer le code 404. Par exemple, en PHP pur :
PHP:
<span class="syntaxdefault"><br /></span><span class="syntaxkeyword"><?</span><span class="syntaxdefault">php<br />header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"HTTP/1.0 404 Not Found"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> </span>
 
Nouveau WRInaute
WRInaute accro
Formulaire en method GET: c'est le browser qui construit l'URL.
La seule méthode c'est de passer ton form en POST.
 
WRInaute impliqué
Si tu enlèves les paramètres d'URL, alors ton code PHP ne pourra pas les récupérer. La seule solution comme le fait remarquer spout est de passer en POST.
 
Discussions similaires
Haut