Wordpress REST API (wp-api) 404 Error: Cannot access the WordPress REST API
I have been using the Wordpress REST plugin WP-API for months now while developing locally with XAMPP. I recently migrated my site to an EC2 instance and everything is working fine except I now get a 404 with the following message whenever I try to access any endpoint on the API:
The requested URL /wordpress/wp-json/ was not found on this server
Pretty permalinks are enabled with the following structure http://.../wordpress/sample-post/
which works fine when navigating to a specific post in the browser.
Here are some details about my setup:
- Wordpress 4.4.1
- Not a Multisite
- WP REST API plugin 2.0-beta9
- Apache 2.2.22
- Ubuntu 12.04.5
Any help would be greatly appreciated as I have gone through SO and the WP Support forums for several hours and am out of ideas. Thank you!
Solution 1:
UPDATED NEW WAY
I also faced similar problem in a local project. I used index.php
after my project url and it worked.
http://localhost/myproject/index.php/wp-json/wp/v2/posts
If it displays a 404 error then update permalinks first (see "Paged Navigation Doesn't Work" section
If it works, maybe you need to enable mod_rewrite
, on ubuntu:
a2enmod rewrite
sudo service apache2 restart
Installation
The REST API is included in WordPress 4.7! Plugins are no longer required, just install the latest version of WordPress and you're ready to go.
If you're before 4.7:
Download plugin from here: http://v2.wp-api.org/
install and activate it.
Usage
To get all posts:
www.mysite.com/wp-json/wp/v2/posts
For the search functionality, searching for test post looks like this:
/wp-json/wp/v2/posts?filter[s]=test
Solution 2:
I had this problem with the latest WordPress 4.7+. In my case the REST API only worked after I changed the permalinks setting to something other than "Plain", which was the default setting for my installation.
Solution 3:
On WPEngine and WP 4.9.2 I only had to update permalinks to get fresh, newly installed site to return v2 API calls. What I did:
- Create site
- Browse to http://yoursitename.wpengine.com/wp-json/wp/v2/posts
- get 404
- Go to admin, settings, permalinks, choose "Post Name"
- Click "Save Changes"
- Browse to http://yoursitename.wpengine.com/wp-json/wp/v2/posts
- success. page displays JSON response
Solution 4:
It turned out to be a problem with the Apache configuration.
First, I deleted the .htaccess
file in the root wordpress directory.
Next, I navigated to /etc/apache2/sites-enabled
and opened 000-default
All of the AllowOverride
variables were set to None, which I replaced with All
.
That did the trick!
Solution 5:
It is the file permission error, apply the following solution:
Edit this file /etc/apache2/apache2.conf
Change /var/www/
Permissions from "None" to "All"
Restart the apache2
server.