wordpress permalinks not working - htaccess seems ok but getting 404 error on pages
For other people landing on this page - Another issue could be (If you are using Apache as your web server) is your httpd.conf or your sites-available/sitename.conf file needs editing.
Your web directory will need to allow the .htaccess file to override it's settings.
look for your web dir in the file - it will be in the bulk of the conf file or segregated into a VirtualHost section.
<Directory /path/to/site> #add the following setting to allow .htaccess in your web dir to work AllowOverride FileInfo #other settings ---</Directory>
This will allow you to set up WordPress URLs however you want, within WordPress.
***Edited - Thank You nietonfir For update. Use the least amount of privilege at first. If this doesn't work then replace AllowOverride FileInfo
with AllowOverride All
There can be multiple things preventing the rewrite rule from working. My ubuntu server needed 3 things changed to get permalinks working.
In newer versions of apache2, you need to enable the module:
sudo a2enmod rewritesudo service apache2 restart
You may also need to modify the apache2.conf file.
sudo nano /etc/apache2/apache2.conf
Change your web directory override rule to AllowOverride All.
<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All Require all granted</Directory>
After that, restart the service again.
The .htaccess file in the WordPress install directory needs to be owned or readable/modifiable by the webserver.
This can be accomplished by changing owner to www-data (usually the webserver user), or changing permissions.
sudo chown www-data /var/www/wordpress-install/.htaccess
OR
sudo chmod 664 /var/www/wordpress-install/.htaccess
Login to your Wordpress admin backend and save the permalink settings, and they should hopefully be working.
This is now solved. I hadn't enabled mod_rewrite. So I did this:
$ sudo a2enmod rewriteEnabling module rewrite.To activate the new configuration, you need to run: service apache2 restart$ service apache2 restart * Restarting web server apache2