URL rewriting et REGEX bonnes pratiques

Nouveau WRInaute
Bonjour,

Je commence a me familiariser avec les concepts de clean URL en utilisant le module rewrite d'Apache 2.4.

Pour faire court, plus je lis et plus je suis perdus en matière de bonnes pratiques.

Je cherche a savoir si on doit privilégier le Match avec plus de règles simple ou moins de règles mais plus complexes. Par exemple:

http://monsite/(devel ou prod)/(b1 ou b2)/([0-9]{10})

Renvoi à http://monsite/api_(dev|run)/index.php?p1=$1&id=$2

Est-ce une bonne pratique ou si on doit faire une règle par condition devel ou prod?

Au pire (.*) renvoi a error.php qui retourne un header 403, mais est-ce une bonne pratique d'utiliser des IF et si oui, comment?

Merci d'avances pour vos réponses.

Martin
 
Nouveau WRInaute
AMHA c'est mieux avec une seule règle comme le font les CMS / frameworks.
Exemples :
- WP : https://wordpress.org/support/article/htaccess/#basic-wp
- Laravel : https://laravel.com/docs/8.x/installation#pretty-urls
Donc parser le REQUEST_URI, QUERY_STRING, PATH_INFO en PHP.
Ensuite c'est plus simple de passer à d'autres serveur HTTP genre Nginx, Caddy, etc...

AHMA? Ok lol....

En fait je suis d'accord mais comment implémenter in IF THEN ELSE a plusieurs niveaux dans une seule règle ?
 
Nouveau WRInaute
Voici en concret ce que je tente de faire:

J'ai mon site
  • http://{FQND}/htdocs/production/inventaire.php?p1=1&p2=2&...pn={n}
  • http://{FQND}/htdocs/developpement/inventaire.php?p1=1&p2=2&...pn={n}

Ayant un site en développement, et utilisant des "clean URL" pour sécurisé le contenue des paramètres et ne pas exposer la structure de mon site, voici mes règles .htaccess qui j'ai implémenté.

Code:
#Disable access to .htaccess file
<Files .htaccess>
    order allow,deny
    deny from all
</Files>

#Disable access to .htaccess file
<Files .htaccess>
    order allow,deny
    deny from all
</Files>

#REWRITE PART AND CONDITIONS
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTPS} off

### GOOD WAY
RewriteRule ^(devel|prod)/inventory/([0-9]{10})$ %{REQUEST_SCHEME}://%{HTTP_HOST}/htdocs/(developpement|production)/inventaire.php?action=view&item=$1 [L]


### BAD WAY (as far as I know ;))
RewriteRule ^devel/inventory/([0-9]{10})$ %{REQUEST_SCHEME}://%/([0-9]{10})$ %{REQUEST_SCHEME}://%{HTTP_HOST}/htdocs/developpement/inventaire.php?action=view&item=$1 [L]

RewriteRule ^prod/inventory/([0-9]{10})$ %{REQUEST_SCHEME}://%/([0-9]{10})$ %{REQUEST_SCHEME}://%{HTTP_HOST}/htdocs/production/inventaire.php?action=view&item=$1 [L]

RewriteRule ^(.*)$ %{REQUEST_SCHEME}://%{HTTP_HOST}/htdocs/generic/error.php?code=403 [R=403,L]]?
 
Dernière édition:
Discussions similaires
Haut