add_rewrite_rule behaving strangely

I’m customizing another plugin by changing the rewrite rule, from:

    add_rewrite_rule('^api/auth/([0-9]+)?/?','index.php?__api=1&uid=$matches[1]','top');

to:

Read More
    add_rewrite_rule('^api/auth/','index.php?__api=1','top');

After making the change (and not forgetting to refresh the permalinks) my endpoint fails to work. When I attempt something like:

file_get_contents("http://mydomain.com/api/auth/")

…instead of the json object that should be returned, I get the user login form.
enter image description here

What’s even weirder is that when I add an integer to the end like this:

file_get_contents("http://mydomain.com/api/auth/3")

…I get the json object that I expect! What’s going on here?

Related posts

Leave a Reply

1 comment

  1. So I’ve solved this problem, but I’m still scratching my head about the “solution”:

    add_rewrite_rule('api/autho/?$','index.php?__api=1','top');
    

    This version of the rewrite rule works for some reason. I’m guessing that there’s some sort of namespace conflict that I accidentally stumbled across. Maybe /auth/ is used somewhere else?