Ты знаешь как работают скобки в регулярке, чуви? Так вот (?
работает так же как скобки, но не создает дополнительную группу в результате. Т.е. /^\/request\/index(\.html)?/ => ['/request/index.html', '.html'], /^\/request\/index(?:\.html)?/ => ['/request/index.html'].