2 votes

htaccess avec multi-paramètres

J'essaie de rediriger mes liens comme ceci :

mon href = example.com/?p=users&page=2
mon URL devrait être = example.com/users/page/2

En ce moment, mon mod_rewrite fonctionne avec :

mon href = example.com/?p=users
mon URL = example.com/users

Voici mon htaccess :

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/index.php
RewriteRule ^(.*)$ index.php?p=$1 [L,QSA]
</IfModule>

2voto

anubhava Points 172509

Mettez votre .htaccess complet comme ceci :

Options +FollowSymLinks
RewriteEngine On

# skip all files and directories from rules below
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# skip index.php from any rules below
RewriteRule ^index\.php$ - [L,NC]

# handle /users/page/2 URI
RewriteRule ^([\w-]+)/([\w-]+)/(\d+)/?$ index.php?p=$1&$2=$3 [L,QSA]

# handle /users URI
RewriteRule ^([\w-]+)/?$ index.php?p=$1 [L,QSA]

1voto

w3d Points 3138
RewriteRule ^(.*)$ index.php?p=$1 [L,QSA]

Essayez de changer votre RewriteRule à :

RewriteRule ^(.+?)(?:/page/(\d*))?$ index.php?p=$1&page=$2 [L,QSA]

Un léger bémol à cette approche " à règle unique " est qu'une demande de example.com/users sera réécrit en index.php?p=users&page= c'est-à-dire un vide page URL param.

(.+?) - Le point d'interrogation dans ce sous-modèle rend la regex non gourmande, sinon l'option en option la deuxième partie de la regex sera toujours omise.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X