Почему бы просто не использовать server.error-handler-404 = "/path/to/index.php"
?
Но что касается самого регулярного выражения, у вас там много неэкранированных персонажей. Второй .
Я предполагаю, что вы имеете в виду буквально .
. Если это так, вам нужно убежать с обратной косой чертой \.
. То же самое касается? характер (который, опять же, я полагаю, вы имеете в виду буквальный?). Таким образом, регулярное выражение должно быть:
".*\\.(js|ico|gif|jpg|png|css|php|htm)(\\?.*)?$"
Кроме того, вы могли бы улучшить его еще больше, убрав знак вопроса вокруг шаблона запроса (я предпочитаю этот синтаксис, его легче читать):
".*\\.(js|ico|gif|jpg|png|css|php|htm)(\\?.*|)$"