Как настроить htaccess для ридеректа с адреса без слэша в конце, чтобы не терять данные POST запроса?
Запросы отправляются внешней системой методом POST по адресу mysite.com/dir/events/call и должны обрабатываться файлом mysite.com/dir/events/call/index.php, но index.php получает пустой POST запрос.
Тестировал отправку запросов на адрес mysite.com/dir/events/call/ со слэшом в конце. В этом случае все работает, index.php получает POST данные.
Сейчас в htaccess, который лежит в mysite.com/dir/events/call/ прописано RewriteRule %{REQUEST_URI}/index.php [R=307,L]. При переходе в браузере по адресу mysite.com/dir/events/call автоматически дописывается слэш в конце, если это имеет значение.
Подскажите как настроить корректный редирект к обработчику без потери POST данных при отправке запроса на mysite.com/dir/events/call без слэша в конце.
А в логах Apache для POST запросов к /dir/events/call какой код ответа? Наверно 301. Там mod_dir для запросов к существующим папкам автоматически добавляется слеш.
Покажите весь .htaccess тот что в корне сайта и тот что в папке /dir/events/call/.
dodo512, действительно, дело было в htaccess, который в корне сайта. Добавил в него поближе к началу следующую конструкцию, переименовал обработчик index.php в name.php, чтобы не было путаницы, и все заработало.
# Если это запрос от внешней системы
RewriteCond %{REQUEST_URI} ^(.*)/dir/events/call
# Если это не обращение к самому файлу обработчика (чтобы избежать бесконечного редиректа)
RewriteCond %{REQUEST_URI} !^(.*)/dir/events/call/name.php
# Переадресовываем на обработчик
RewriteRule ^(.*)$ %{REQUEST_URI}/name.php [R=307,L]
allgerasimof, так можно и не переименовывать обработчик оставив как есть index.php
А в корне сайта добавить в .htaccess только RewriteRule ^dir/events/call$ /$0/ [R=307,L]