It could happen that wordpress in localhost doesn’t see textual permalink, such as the article name, or the like, and see only ”simple” permalink with a final suffix such as ?p=123.
The problem is an apache problem. To fix it, you have to:
- modifying the apache config file, with a name such as apache2.conf or another name, depending of your S.O., by adding something like
<Directory /var/www/your-wordpress-path/>
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
</Directory>
- then you have to do these bash commands (in a terminal):
sudo a2enmod rewrite
sudo systemctl restart apache2
- then you have to put in your (root wordpress) folder an .htaccess file with a content like:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /your-wordpress-path/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /your-wordpress-path/index.php [L]
</IfModule>
your-wordpress-path is the path following http://localhost, so don't have to write http://localhost
At this point you should be able to set a textual permalink, after setting it, save it, and try.