Symptoms
-
Website pages based on WordPress hosted on Plesk server are not accessible. The following error is shown in browser:
404 Not Found
when:
-
FPM application served by Apache or FastCGI handler is set in Plesk > Domains > example.com > PHP Settings
- Non Plain is set in WordPress Dashboard > Settings > Permalinks type
-
FPM application served by Apache or FastCGI handler is set in Plesk > Domains > example.com > PHP Settings
-
WordPress REST API point (wp-api) shows 404 error. It can be checked by accessing
http://example.com/wp-json/wp/v2/posts
Cause
Rewrite rules are not adjusted to work with WordPress permalinks.
Resolution
Via WordPress admin Dashboard(preferred solution)
- Login to Plesk.
- Go to Domains > example.com > WordPress > Log in
- Go to Settings > Permalinks
- Click on Save Changes
Via Plesk GUI
-
Go to Domains > example.com > File Manager > httpdocs
-
Create the
.htaccess
file by clicking on it or edit existing.htaccess
and add below lines:# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress -
Click Save button
Via SSH
-
Edit the file
/var/www/vhosts/example.com/httpdocs/.htaccess
or create it if does not exist and add below lines:# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Additional information
Website pages based on WordPress show "404 Not Found" when PHP-FPM by Nginx and Proxy Mode are used