Forum Moderators: phranque
For global known items I use variables which are defined in a few files. I have many internal- and external links grouped in an include file for example. This gives me the possibility when a destination changes to only update the link value in the include file. All pages where that link is used will than immediately point to this new destination. For example, in my link file could be a line like:
<!--#SET VAR="lwwwc" VALUE="href=\"http://www.w3.org/\"" -->
Then, somewhere in an .shtml file I use the echo statement:
<a <!--#ECHO VAR="lwwwc" --> >World Wide Web Consortium</a>
If the World Wide Web Consortium would move to another domain (this isn't the best example :) ) I only have to change the contents of my links include file.
Recently I moved both sites from a hosting service with Apache 1.3.29 to a Apache 2.0.xx The move went without problems. I checked if the pages worked well and found no errors.
The above mentioned way referencing links still worked. Two days ago I installed the Apache 2.0.51 version because of some functionality I needed which wasn't present in my 2.0.xx version. As the server is running a Fedora distribution, I used the official httpd RPM file for this Fedora installation. The previous Apache installation had also been from a Fedora Core RPM file so I expected no problems.
Yesterday I started to see a lot of 404 errors in my log files. Especially Googlebot, Yahoo and MSN generated calls to URLs that looked like /%22/directory/example.html%22 and /\"/directory/example.html\" instead of the regular /directory/example.html.
Feeding handsful of 404's to the three big search engines is not a very good way to stay in the internet business so as soon as I found these lines in my log-files, I started examining my .html files. It appeared that this 2.0.51 version had a change in the default encoding of the echo statement.
Since Apache 1.3.12, there is an "encoding" tag for the SSI echo statement. On my previous two installations the default value apparently was "none", where in the new version in the RPM I extracted two days ago it was changed to "entity", changing the \" in my SET statements to " in the resulting HTML. Now, my link tags looked something like:
<a href="www.w3.org">...</a>
According to the manual the default should be "entity" for all versions starting at 1.3.12, so I should have seen this problem already many years ago, but my experience is different. Sad thing is that the encoding tag doesn't seem to be part of the SSI standard--if there is an SSI standard anyway--and that it can have major consequences in site behaviour in particular situations.
Because I use also these SSI generated links for a number of internal links I repaired everything immediately. Rankings have not yet suffered and Google, MSN and Yahoo now pick up the correct versions of the pages again but I don't like to think of the situation when they had crawled my sites a few times with these faulty links on the pages.
Conclusion: If you make a change in your system configuration, how small that may seem (I thought a move from 1.3.29 to 2.0.xx would have far greater consequences than a move from 2.0.xx to 2.0.51) always test your system and look in your access_log for strange behaviour. It is easy to lose rankings in the search engines, but it is almost impossible to get back to previous positions in the SERPs when you kicked yourself out.