If you use or plan to start using its benefits, be aware that there is a high probability that you will get a 500 Internal Server Error error. Of course, there can be several reasons for that. However, here are a few things to find and more importantly how to fix if you're getting that error.
The first thing you need to do is check the .htaccess file to see if the W3 Total Cache has been added to the file itself, ie at the bottom of the file itself. For example it should look like this:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# BEGIN W3TC Browser Cache
<IfModule mod_deflate.c>
<IfModule mod_setenvif.c>
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
</IfModule>
You will notice a line where:
# BEGIN W3TC Browser Cache
This is actually what causes the error. "# BEGIN W3TC Browser Cache" should be on a new line. The solution? Simply just press enter before the tab and save.
Why did this even happen in the first place?
A normal WordPress installation creates the .htaccess file itself. WordPress rewrite code looks like this:
# 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
W3 Total Cache seems to look for the "# BEGIN WordPress" comment in the file, so it knows when to add the other lines of code. However, if the htaccess file has been modified and this comment does not exist, W3 Total Cache does not know what to do. W3 Total Cache adds its codes at the end of the file itself. If you have a "# END WordPress" line it's no problem, W3 TotalCache will add above that comment and it won't have any effect on Apache.
The problem arises if there are no comments and no new lines, but everything is in one line. Apache will report a 500 error because W3 will add the code on the last line anyway no matter what it says.

