Articles in this section

 Website pages based on WordPress show "404 Not Found" when PHP-FPM by Apache is used

Plesk for Linux kb: technical ABT: Group B

Applicable to:

  • Plesk for Linux

Symptoms

  • Website pages based on WordPress hosted on Plesk server are not accessible. The following error is shown in browser:

    CONFIG_TEXT: 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
  • 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)
Save permalinks in WordPress admin dashboard:
  1. Login to Plesk.
  2. Go to Domains > example.com > WordPress > Log in
  3. Go to Settings > Permalinks
  4. Click on Save Changes
Via Plesk GUI
  1. Log into Plesk

  2. Go to Domains > example.com > File Manager > httpdocs

  3. Create the .htaccess file by clicking on it or edit existing .htaccess and add below lines:

    CONFIG_TEXT: # 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

  4. Click Save button

Via SSH
  1. Connect to the server via SSH.

  2. Edit the file /var/www/vhosts/example.com/httpdocs/.htaccess or create it if does not exist and add below lines:

    CONFIG_TEXT: # 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

Was this article helpful?

Comments

0 comments

Please sign in to leave a comment.