.htaccess url rewrite Enlever les parametres

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 :)
 
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.
 
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
 
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.
 
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 ?
 
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]
 
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
 
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.
 
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...
 
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)
 
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>
 
Formulaire en method GET: c'est le browser qui construit l'URL.
La seule méthode c'est de passer ton form en POST.
 
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.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut