Следующее правило:
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.