Как запретить пользователю доступ к php,json файлам через .htaccess, чтобы работали ajax запросы?
На самом деле никак. Пользователь это браузер, браузер должен через Ajax обращаться к скрипту. Ajax это по сути и есть прямой запрос. Можно поиграться с CORS, но результата будет ноль ибо  он не спасет от такого.

Стоит подумать какую проблему вы пытаетесь решить этим. Что это за скрипт и почему надо его ограничить?
.htaccess
SetEnvIfNoCase X-Requested-With XMLHttpRequest ajax
Order Deny,Allow
Deny from all
Allow from env=ajax

и закинуть это в отдельную папку типа /ajax/ вместе с теми скриптами и файлами к которым доступ разрешён только посредством XHR-запросов