Comment autoriser trois parameters facultatifs dans l’URL par .htaccess?

J’ai http://example.com et une classe de routage PHP qui vérifie si une URL existe.
Je veux faire un nouvel itinéraire, qui est:

http://example.com/foo/bar/123

mais tant que je l’ouvre, l’Apache me redirige vers une page d’erreur. Donc, j’utilise un .htaccess. Le code est le suivant:

 RewriteEngine on

 RewriteCond% {REQUEST_FILENAME}! -F
 RewriteCond% {REQUEST_FILENAME}! -D
 RewriteRule ^ (. *) /Index.php [L]

et ça marche, aussi longtemps que j’utilise http://example.com/foo , mais une fois que j’ajoute d’autres parameters, cela me redirige vers une erreur.

Je suppose que le code de réécriture est erroné. Est-ce faux?
Si oui, pourriez-vous me suggérer le bon?
Si non, où le problème pourrait-il être localisé?

Vous pouvez gérer l’URI avec php:

.htaccess:

 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [L] 

php:

 if (isset($_SERVER['REQUEST_URI'])) { $params = explode("/", lsortingm($_SERVER['REQUEST_URI'], "/")); print_r($params); } 

example.com/just/these/params

Sortie:

 Array ( [0] => just [1] => these [2] => params ) 
 RewriteRule ^(.*)$ /$1.php [L] 

Essayez comme ça. Dans votre fichier .htaccess, chaque requête qui n’est pas un fichier sur le disque est redirigée vers index.php, je suppose que index.php redirige plus loin. Je ne pense pas que vous puissiez obtenir cette route / foo / bar / 123 ou / foo / bar avec une seule ligne de code. Chaque page a besoin de sa propre règle de réécriture. Pourriez-vous être plus précis?

Je suppose que cela pourrait aider. “/index.php” déléguera le mauvais chemin.

 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [L] 

Depuis Apache 2.2.16:

 FallbackResource /index.php