How Zend Server CE breaks WordPress Permalinks and how to fix it

Recently, I switched to Zend Server CE from a manually installed AMP package (Apache/MySQL/PHP) to make use of Zend’s lightweight environment and easy install package. In doing this, I found that it broke the permalinks associated with WordPress.  Despite mod_rewrite being enabled, and the “Pretty Permalinks” code being in the .htaccess file, it still didn’t work.

404 Error

To fix this problem do the following:

  1. Open up httpd.conf.  (On Windows, the default location of this file is C:Program FilesZendApache2conf.)
  2. Find the line with <Directory />.
  3. Make sure +FollowSymLinks is present on the Options line.  (i.e. Options +FollowSymLinks)
  4. Change AllowOverride None to AllowOverride All.
  5. Restart Apache.

AllowOverride controls how .htaccess files are used.  When AllowOverride is set to None, users cannot override the configurations set in httpd.conf for particular directories.  While the .htaccess in this client’s WordPress directory was correct, Apache wasn’t allowing it to override the default settings as stated in httpd.conf.  It is definitely worth it to learn more about how to configure Apache so that you can have a secure and well-performing environment, especially if a lot of developers work on the same production server.

If you have similar experience, we would love to hear what you have to say.  Perhaps it will save someone else a minute or even a few hours.

6 thoughts on “How Zend Server CE breaks WordPress Permalinks and how to fix it”

  1. Hi,

    I’m happy to learn that you were able to solve the problem! Feel free to post a link from the Zend Server forums at to this post so other users can use this information.

    Zend Server comes with AllowOverride None by default, mostly because in production environments enabling .htaccess files is not a very good practice.

    Put the security implications aside, setting AllowOverride to anything but None will cause Apache to look for the .htaccess file in every directory in the path to every file which is requested. That’s a lot of system calls, and especially in a system with an inherently slow file system like Windows is not a good thing.

    In development, it’s not a big deal of course – you don’t need that much of optimization there, and of course having the ability to use .htaccess files makes things much easier. But in production, I would recommend keeping AllowOverride to None and moving all the configuration from the .htaccess file into a section in the main Apache config file or in a file included from it.


    Shahar E (Zend Server Team)

  2. Hey,

    Just thought I should share that in later versions of ZS CE you also need to edit the block that begins with

    Mine was line 212 to AllowOverride All

    Thought you should know as this post is positioned quite high on Google for Zendserver CE kills WP.


Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>