Как разрешить три необязательных параметра в URL-адресе .htaccess?

У меня есть http://example.com и класс маршрутизации PHP, который проверяет, существует ли какой-либо URL-адрес.
Я хочу сделать новый маршрут, который:

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

но пока я его открываю, Apache перенаправляет меня на страницу с ошибкой. Поэтому я использую .htaccess. Код:

 RewriteEngine on

 RewriteCond% {REQUEST_FILENAME}! -f
 RewriteCond% {REQUEST_FILENAME}! -d
 RewriteRule ^ (. *) /index.php [L]

и он работает, пока я использую http://example.com/foo , но как только я добавляю некоторые другие параметры, он перенаправляет меня на ошибку.

Я предполагаю, что код перезаписи неправильный. Это неправильно?
Если да, можете ли вы предложить мне хороший?
Если нет, где проблема может быть найдена?

Вы можете обрабатывать URI с помощью php:

.htaccess:

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

PHP:

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

example.com/just/these/params

Вывод:

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

Попробуй так. В вас .htaccess каждый запрос, который не является файлом на диске, перенаправляется на index.php, я предполагаю, что index.php перенаправляется дальше. Я не думаю, что вы можете получить этот маршрут / foo / bar / 123 или / foo / bar только с одной строкой кода. Каждая страница нуждается в собственном правиле перезаписи. Не могли бы Вы уточнить?

Думаю, это могло бы помочь. «/index.php» делегирует неверный путь.

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

Поскольку Apache 2.2.16:

 FallbackResource /index.php