htaccess rewrite QueryString исчезает в Apache 2.2, но работает в версии 2.4

Следующее правило:

RewriteRule ^api/([\w-]+)/?$ api.php?method=$1 [QSA] 

На локальном сервере Apache 2.4 он позволяет мне переписать:

 /api/create-account/?name=abcd 

в

 /api.php?method=create-account&name=abcd 

На производственном сервере, который является Apache 2.2, запрос отправляется на api.php . Но в моем скрипте не найден параметр строки запроса. Если я сброшу $_REQUEST , $_GET или $_POST , я получаю пустой массив.

Что мне не хватает?

Вам нужно отключить Multiviews:

 Options -Multiviews 

Multiviews – это опция mod_negotiation, которая сообщает ему попробовать сопоставить запрос с физическими файлами. Когда он видит запрос как /api/somtehin а затем видит, что есть файл с именем api.php , он сразу же отобразится в этом файле, полностью обходя mod_rewrite.