Чтобы соответствовать всему , вы можете просто использовать: ^(.+)/(.+)/?$
(с необязательным завершающим слешем)
Если вы хотите придерживаться существующего формата, используя классы символов, у вас есть парапроблемы здесь.Внутри наборов символов / классов вы всегда должны ставить дефисы в конце для правильного регулярного выражения.Вы также пропустили прописные буквы.Таким образом, чтобы соответствовать буквенно-цифровому, подчеркиванию и дефису, которые вы хотите:
[a-zA-Z0-9_-]
или, используя экранирование символов:
[\w\d_-]
Ваш второй набор скобок в настоящее время специально исключает точку и косую черту, сопоставляявсе остальные.
Если данные вашего приложения четко определены, вы можете использовать определенные классы символов и 404 для всех других данных.Если вы хотите перенаправить одеяло, вам следует исправить следующее:
RewriteRule ^(.+)/(.+)/?$ index.php?engine=$1&q=$2 [NC,L]