There are a few things to sort out here.
The first is why your rewrite rule will not work.
add_rewrite_rule('/api', '/wp-admin/admin-ajax.php', 'top');
The WordPress rewrite does not redirect to a page. What does is it parses the path using regular expressions into a WordPress query vars. If you disable pretty URLs in WordPress, you’ll see the query vars in the URL for pages on your site: http://example.com/?p=262, http://example.com/?page_id=2, or http://example.com/?m=201309`.
After the rewrite rules create query vars, WordPress then calls the content from the database and sets the flags (is_single(), is_404(), etc). Then the appropriate template is found based upon those flags.
Your rewrite rule will not work as it generates no query vars. WordPress doesn’t call the file for it.
What can you do instead?
- In you
.htaccessfile, add a server rewrite rule to map/apito/wp-admin/admin-ajax.php. - Just call
/wp-admin/admin-ajax.phpinstead. - Add your own ajax handler by hooking into the
template_redirecthook.