I’ve had several instances where Permalinks (SEO links) have not immediately worked on new WordPress installations, resulting in “Page Not Found” errors. This is due to a configuration issue in the webserver (Apache, IIS, etc…). The fix is simple but might not be obvious if you aren’t familiar with webserver configuration.
First, let’s review what Permalinks are. Permalinks provide an “SEO friendly” URI for WordPress Pages and Posts.
So instead of the default format URI:
http://www.possumstew.com/?page=2
We get the nicer:
http://www.possumstew.com/wordpress-permalinks-not-working/
Now let’s look at how Permalinks are configured in WordPress. Click on “Settings” -> “Permalinks” in the WordPress admin menu and you will see a page similar to this:
Select one of the Permalink configuration options and click Save. WordPress will attempt to add the following code to the .htaccess file located in the the root directory of your installation:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
*IMPORTANT! WordPress must have permission to write to the .htaccess file. Contact your site administrator if this is not the case and you are unable to set the permission yourself.
If everything has gone as planned you should now be able to click on any link to your Pages or Posts and be taken the the Permalink URI. However if your webserver is not configured correctly you may get a “Not Found” error instead.
They key to solving this problem is your webserver’s AllowOverride directive (Apache, IIS, etc). AllowOverride is set in the webserver configuration file and must be located within a Directory section. For example:
<Directory ABSOLUTE_PATH_TO_YOUR_WORDPRESS INSTALLATION>
AllowOverride All
</Directory>
Save this in your webserver configuration file and restart the webserver. Your Permalinks should now work.






