One thing that has been a pain so many times is getting PermaLinks in WordPress to work. And the majority of the time it was because I forgot a simple Option in the Apache Config files, or file permissions. So here is my checklist of things to do to ensure it works (note: all of these instructions assume you are using Ubuntu):

Step 1.

Make sure there are write permissions for the .htaccess file (change “www-data” to whatever your instance of Apache is running under, and “path/to/documentRoot/” to the root content folder of your site (this would likely be mapped in /etc/apache/site-available/000-default)

sudo chown www-data /path/to/documentRoot/ -R
sudo chmod g+w /path/to/documentRoot/ -R

Step 2.

Make sure mod_rewrite is enabled for php

sudo a2enmod rewrite

Step 3.

Make sure that AllowOverride is set to All


    Options -Indexes +FollowSymLinks +MultiViews
    AllowOverride All
    Order allow,deny
    allow from all

 

Step 4.

Add: AccessFileName .htaccess to the vhost (not Directory) portion of your apache config file

Step 5.

This seems like a no-brainer, but TRIPLE check that the DocumentRoot value and the value match. A typo wont throw an error, but WILL stop it from working.

Step 6.

And of course restart apache again

sudo apachectl restart