URL Rewriting : Expressions régulières qui m'ennuie !

Eléphant du PHP | 386 Messages

30 janv. 2017, 15:14

Salut !

J'ai un problème dans mon htaccess :

J'ai créé un système d'articles en php, et j'utilise l'url rewriting pour des urls plus belles ;)
J'ai 5 articles pour l'instant, 5 sur 6 fonctionnes avec l'url rewriting.
Par exemple, j'ai bien accès à monsite.fr/files/articleTerre, mais pas à monsite.fr/files/articleMars

Ils fonctionnent avec la ligne :

Code : Tout sélectionner

RewriteRule ^files/([a-z0-9\-]+)$ /usr/articles/index.php?page=$1 [L]
Mais je pense que les expressions régulières sont mauvaises, même pour cette ligne :

Code : Tout sélectionner

RewriteRule ^([A-Za-z_/0-9]+)$ /usr/profile/index.php?username=$1 [L]
J'ai un autre problème, on peux mettre ce qu'on veut après /home par ex : monsite.fr/home?qsmfjk=qsdkfj
Comment je peux faire ?

Code : Tout sélectionner

RewriteCond %{REQUEST_URI} ^/usr/$1 RewriteRule (.*) https://www.monsite.fr/home [L,R=301] RewriteCond %{HTTP_USER_AGENT} "ipod|iphone|ipad|android|palm|googlebot-mobile" [NC] RewriteCond %{REQUEST_URI} !^/m/ RewriteRule (.*) /m/ [R] RewriteRule ^signup$ /signup.php [L] RewriteRule ^login$ /login.php [L] RewriteRule ^logout$ /usr/logout.php [L] RewriteRule ^home$ /usr/index.php [L] RewriteRule ^files/([a-z0-9\-]+)$ /usr/articles/index.php?page=$1 [L] RewriteRule ^tools/planetarium$ /usr/tools/planetarium.php [L] RewriteRule ^([A-Za-z_/0-9]+)$ /usr/profile/index.php?username=$1 [L]
Merci ;)

Mammouth du PHP | 2703 Messages

30 janv. 2017, 16:10

Par exemple, j'ai bien accès à monsite.fr/files/articleTerre, mais pas à monsite.fr/files/articleMars
tout à fait anormal vu qu'il y a une majuscule dans les deux cas, et l'expression ne contient pas A-Z

pour éviter les paramètres, je fais cela :
RewriteCond %{REQUEST_URI} ^/(2A|2B|[0-9][0-9])/([0-9][0-9][0-9][0-9][0-9])$
RewriteCond %{QUERY_STRING} ^$
RewriteRule (.*) fichier.php [L]

Eléphant du PHP | 386 Messages

30 janv. 2017, 16:32

La majuscule c'était pour l'exemple ;)

Le nom du fichier peut avoir une majuscule, un chiffre, ou être minuscule.

J'ai un site sur l'astronomie, la vraie url c'est monsite.fr/usr/articles/index.php?page=univers
J'aimerai qu'elle soit accessible comme ceci : monsite.fr/files/univers

La page /files/univers est redirigé vers https://www.monsite.fr/home?page=univers
Alors que les autres /files/systeme-solaire ou /files/galaxies etc... fonctionnent..

C'est bizarre..

Je vais aussi adapter mon site à la structure MVC, je suis en apprentissage la-dessus, donc refonte de mon code :-)
Je vais voir si ça change quelque chose aux urls "rewritées"