<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tech Snacks &#187; Drupal</title>
	<atom:link href="http://teqsnacks.com/category/cms/drupal/feed/" rel="self" type="application/rss+xml" />
	<link>http://teqsnacks.com</link>
	<description>Simple CMS, Blogging, Tech, SEO and Social Media</description>
	<lastBuildDate>Mon, 23 Jan 2012 10:52:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Internet Explorer&#8217;s annoying 30 CSS files limit bug</title>
		<link>http://teqsnacks.com/2010/02/15/internet-explorer-annoying-30-css-files-limit-bug/</link>
		<comments>http://teqsnacks.com/2010/02/15/internet-explorer-annoying-30-css-files-limit-bug/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 16:22:59 +0000</pubDate>
		<dc:creator>Fili</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[fix]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[limit]]></category>
		<category><![CDATA[optimize]]></category>

		<guid isPermaLink="false">http://teqsnacks.com/2010/02/15/internet-explorer-annoying-30-css-files-limit-bug/</guid>
		<description><![CDATA[Internet Explorer is a lousy browser family, and it has some of the most annoying bugs possible. Took me a while to figure out why websites were breaking in some pages, till I was finally able to figure out that Internet Explorer has a bug where it can handle only pages with under 30 CSS [...]]]></description>
			<content:encoded><![CDATA[<p><img style="border-bottom: 0px;border-left: 0px;margin: 5px 5px 5px 20px;border-top: 0px;border-right: 0px" title="Internet Explorer’s annoying 30 CSS limit bug" border="0" alt="Internet Explorer’s annoying 30 CSS limit bug" align="right" src="http://teqsnacks.com/files/2010/02/image.png" width="163" height="183" /> Internet Explorer is a lousy browser family, and it has some of the most annoying bugs possible. </p>
<p>Took me a while to figure out why websites were breaking in some pages, till I was finally able to figure out that Internet Explorer has a bug where it can handle only pages with under 30 CSS files. Anything above that and the page would go dead. </p>
<p>Don’t believe me? check Microsoft’s “<a href="http://support.microsoft.com/kb/262161" target="_blank">All style tags after the first 30 style tags on an HTML page are not applied in Internet Explorer</a>”</p>
<blockquote><p>All style tags after the first 30 style tags on an HTML page are not applied. Occasionally, you may also receive the following error message: </p>
<p><strong>The page you are looking for might have been moved or had its name changed.</strong> </p>
<p>If you use a network monitor tool to capture network traffic, you may notice that a TCP reset occurs when Internet Explorer is receiving the page. Internet Explorer then generates another POST request if the original request was a POST request. Or, Internet Explorer may send a GET request instead.</p>
</blockquote>
<p>You’d think that Microsoft would fix such a bug, but looking at the Internet Explorer versions that are affected, the list starts back at version 4.0 and goes up all the way to the most recent version as of today – Internet Explorer 8. Brilliant.</p>
<p>&#160;</p>
<p>If you’re developing Drupal based websites, 30 CSS files are nothing, especially with the more advanced themes and modules. It’s enough that you include the theme, views and panels to easily top this limit.</p>
<p>But, there are a few things that might help.</p>
<p>For one, the <a href="http://drupal.org/project/unlimited_css" target="_blank">IE Unlimited CSS module</a> saved me with the Drupal 6 installations.</p>
<p>In some cases, though not all, the built-in Drupal CSS aggregation/optimization may help (if it’s aggregated already, that is).</p>
<blockquote><h4>How to enable Drupal CSS file aggregation</h4>
<ol>
<li>Log in as your Drupal site’s administrator. </li>
<li>Go to the Administer » Site configuration » Performance page. </li>
<li>Check the Enabled checkbox for Optimize CSS . </li>
<li>Click the Save configuration button. </li>
</ol>
</blockquote>
<p>&#160;</p>
<p>Another option, if you’re not in Drupal is using a CSS optimizer solution. Here’s from <a href="http://nadeausoftware.com/articles/2008/06/dont_bother_using_css_optimization_speed_web_site" target="_blank">Nadeau Software’s list</a>, and although they claim it won’t speed up by much, it might save you from IE.</p>
<blockquote><h5>CSS optimizers</h5>
<p>Hand-editing CSS to make it more optimal is tedious. Instead, use a <em>CSS optimizer</em> application. Here's a few of the many available:</p>
<ul>
<li><a href="http://www.blumentals.net/csstool/">Blumentals Software's CSS Toolbox</a> (freeware) </li>
<li><a href="http://www.cssdrive.com/index.php/main/csscompressoradvanced/">CSS Drive's CSS Compressor</a> (freeware) </li>
<li><a href="http://mabblog.com/cssoptimizer/download.html">Michael Bianco's CSS Optimizer</a> (freeware) </li>
<li><a href="http://iceyboard.no-ip.org/projects/css_compressor/">Robson's CSS Compressor</a> (freeware) </li>
<li><a href="http://www.lotterypost.com/css-compress.asp">Lottery Post's CSS Compressor</a> (freeware) </li>
<li><a href="http://csstidy.sourceforge.net/">CSS Tidy</a> (freeware)
<ul>
<li><a href="http://www.cleancss.com/">CleanCSS</a> (freeware) </li>
<li><a href="http://www.codebeautifier.com/">Code Beautifier</a> (freeware) </li>
<li><a href="http://floele.flyspray.org/csstidy//css_optimiser.php">CSS Formatter and Optimiser</a> (freeware) </li>
<li><a href="http://www.cssportal.com/generators/optimize.htm">CSS Code Formatter and Optimizer</a> (freeware) </li>
<li>... and many more based upon <em>CSS Tidy</em> </li>
</ul>
</li>
</ul>
</blockquote>
<p>&#160;</p>
<p>It never ceases to amaze me how a serious company as big as Microsoft, with all the resources available to it, keeps getting the whole browser thing wrong. What’s even more remarkable, is that there are those among us who still use that thing.</p>
]]></content:encoded>
			<wfw:commentRss>http://teqsnacks.com/2010/02/15/internet-explorer-annoying-30-css-files-limit-bug/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>GWT&#8217;s Parameter Handling : Duplicate Content in Drupal &amp; Gallery2</title>
		<link>http://teqsnacks.com/2010/01/27/gwt-parameter-handling-duplicate-content-drupal-gallery2/</link>
		<comments>http://teqsnacks.com/2010/01/27/gwt-parameter-handling-duplicate-content-drupal-gallery2/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 06:30:35 +0000</pubDate>
		<dc:creator>Fili</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Gallery2]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[duplicate content]]></category>
		<category><![CDATA[dynamic urls]]></category>
		<category><![CDATA[google custom search]]></category>
		<category><![CDATA[google webmasters central]]></category>
		<category><![CDATA[parameter handling]]></category>
		<category><![CDATA[yahoo explorer]]></category>

		<guid isPermaLink="false">http://teqsnacks.com/2010/01/27/gwt-parameter-handling-duplicate-content-drupal-gallery2/</guid>
		<description><![CDATA[A while back Google announced the addition of parameter handling to the Google Webmasters Tools (GWT). We're happy to announce another feature to assist with managing duplicate content: parameter handling. Parameter handling allows you to view which parameters Google believes should be ignored or not ignored at crawl time, and to overwrite our suggestions if [...]]]></description>
			<content:encoded><![CDATA[<p>A while back <a href="parameter handling. Parameter handling allows you to view which parameters Google believes should be ignored or not ignored at crawl time, and to overwrite our suggestions if necessary.">Google announced the addition of parameter handling to the Google Webmasters Tools</a> (GWT).</p>
<blockquote><p><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" title="Google Webmasters Tools" border="0" alt="Google Webmasters Tools" src="http://teqsnacks.com/files/2010/01/image3.png" width="260" height="58" /> </p>
<p>We're happy to announce another feature to assist with managing duplicate content: parameter handling. Parameter handling allows you to view which parameters Google believes should be ignored or not ignored at crawl time, and to overwrite our suggestions if necessary. </p>
</blockquote>
<p>If you’re not handling this through robots.txt, this is a great way to simply address duplicate content issues cause by parameters leading to duplicate pages that display the exact same content.</p>
<p>The option in GWT indicates :</p>
<blockquote><p>Dynamic parameters (for example, session IDs, source, or language) in your URLs can result in many different URLs all pointing to essentially the same content. For example, http://www.example.com/dresses?sid=12395923 might point to the same content as http://www.example.com/dresses. You can specify whether you want Google to ignore up to 15 specific parameters in your URL. This can result in more efficient crawling and fewer duplicate URLs, while helping to ensure that the information you need is preserved. (Note: While Google takes suggestions into account, we don't guarantee that we'll follow them in every case.)</p>
</blockquote>
<p>&#160;</p>
<p>Since someone emailed me to ask - here are some of my suggestions for optimal SEO configurations. If you have others – I’m interested.</p>
<p>&#160;</p>
<h3><u><strong>Gallery2</strong></u></h3>
<ul>
<li>g2_highlightId : Ignore </li>
<li>g2_imageViewsIndex : Ignore </li>
</ul>
<p><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" title="GWT’s Parameter Handling : Duplicate Content  in Drupal &amp; Gallery2" border="0" alt="GWT’s Parameter Handling : Duplicate Content  in Drupal &amp; Gallery2" src="http://teqsnacks.com/files/2010/01/image4.png" width="367" height="212" /> </p>
<p>&#160;</p>
<h3><u><strong>Drupal</strong></u></h3>
<ul>
<li>destination </li>
<li>order </li>
<li>sort </li>
</ul>
<p>&#160;</p>
<h3><strong><u>Google Custom Search</u></strong></h3>
<ul>
<li>as_q </li>
<li>sitesearch </li>
</ul>
<p>&#160;</p>
<p>BTW – Yahoo’s Site Explorer has had a similar concept with <a href="http://searchengineland.com/yahoo-site-explorer-adds-dynamic-url-rewriting-tool-11991">Dynamic URLs</a> (under Actions) for years.</p>
<blockquote><p><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" title="Yahoo Search Site Explorer" border="0" alt="Yahoo Search Site Explorer" src="http://teqsnacks.com/files/2010/01/image5.png" width="244" height="87" /> </p>
<p>Specify up to 10 dynamic parameters that you want us to treat specially whenever these are seen in URLs belonging to http://www.yourdomain.org . We will automatically rewrite the URLs containing these parameters as specified below. You can choose to:</p>
<ol>
<li>
<p><strong>Remove</strong> these parameters <strong>from</strong> the <strong>URLs</strong>, such as in case of session ids, you could ask to remove 'sid' from URLs.</p>
</li>
<li>
<p><strong>Use</strong> a <strong>default value</strong> for the parameter, for example you could set the 'src' parameter to be 'yhoo_srch'</p>
</li>
</ol>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://teqsnacks.com/2010/01/27/gwt-parameter-handling-duplicate-content-drupal-gallery2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drupal Stuck Cron Jobs : MySQL server has gone away</title>
		<link>http://teqsnacks.com/2010/01/22/drupal-stuck-cron-jobs-mysql-server-has-gone-away/</link>
		<comments>http://teqsnacks.com/2010/01/22/drupal-stuck-cron-jobs-mysql-server-has-gone-away/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 06:26:19 +0000</pubDate>
		<dc:creator>Fili</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[stuck]]></category>

		<guid isPermaLink="false">http://teqsnacks.com/2010/01/22/drupal-stuck-cron-jobs-mysql-server-has-gone-away/</guid>
		<description><![CDATA[Some things in Drupal are a pain in the ass to debug. Hanging cron jobs that never seem to end are one of those things. Strange messages start appearing like… Cron has been running for over an hour and is probably stuck. or Attempting to restart Cron That usually doesn’t leave you with much to [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 13px 5px 13px 15px; border-width: 0px;" title="Stuck Drupal Cron Jobs" src="http://teqsnacks.com/files/2010/01/image1.png" border="0" alt="Stuck Drupal Cron Jobs" width="190" height="189" align="right" /> Some things in Drupal are a pain in the ass to debug. Hanging cron jobs that never seem to end are one of those things. Strange messages start appearing like…</p>
<blockquote><p>Cron has been running for over an hour and is probably stuck.</p></blockquote>
<p>or</p>
<blockquote><p><span style="color: #333333;">Attempting to restart Cron</span></p></blockquote>
<p>That usually doesn’t leave you with much to work with, does it?</p>
<p>[UPDATE 05/09/2010 - I recommend installing the <a href="http://drupal.org/project/supercron" target="_blank">SuperCache module</a> that will either take care of 90% of the problems or help you track down the probelm. This should quickly be integrated into core, if you ask me]</p>
<p>First thing to tackle this is try and get the cron unstuck and running. To do that, you can install the <a href="http://drupal.org/project/devel">Devel module</a>, goto the variable view, and delete the cron_semaphore variable that indicated a cron is already running. After flushing all cache you should be able to run cron again. Then, you might come across various types of the next strange message</p>
<blockquote><p>MySql : " Warning: MySQL server has gone away "</p></blockquote>
<p>Gone away where?</p>
<p>This indicates that MySQL is timing out. To tackle that you’d need to tweak MySQL a bit. <a href="http://drupal.org/node/259580">Drupal has a great guide on that</a>. Essentially, it’s opening your /etc/my.cnf and setting it to something that allows longer runs. Following is what I ended up with :</p>
<p><code> </code></p>
<p><code>[mysqld]<br />
skip-bdb<br />
set-variable = max_connections=500<br />
safe-show-database</p>
<p>connect_timeout=30<br />
interactive_timeout=45<br />
wait_timeout=45</p>
<p>join_buffer_size=2M<br />
key_buffer_size=384M<br />
max_allowed_packet=64M<br />
myisam_sort_buffer_size=48M<br />
read_buffer_size=2M<br />
sort_buffer_size=2M<br />
read_rnd_buffer_size=64M<br />
myisam_sort_buffer_size = 64M<br />
table_cache=4096<br />
thread_cache_size=96<br />
tmp_table_size=64M<br />
query_cache_limit=1M<br />
query_cache_size=32M<br />
query_cache_type=1</p>
<p></code></p>
<p><code> </code></p>
<p>Don’t forget to restart the server and after clearing the cron semaphore again rerun the cron. That should take care of things.</p>
]]></content:encoded>
			<wfw:commentRss>http://teqsnacks.com/2010/01/22/drupal-stuck-cron-jobs-mysql-server-has-gone-away/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drupal SEO : A complete beginners step-by-step video tutorial</title>
		<link>http://teqsnacks.com/2007/12/21/drupal-seo-a-complete-beginners-step-by-step-video-tutorial/</link>
		<comments>http://teqsnacks.com/2007/12/21/drupal-seo-a-complete-beginners-step-by-step-video-tutorial/#comments</comments>
		<pubDate>Fri, 21 Dec 2007 09:33:54 +0000</pubDate>
		<dc:creator>Fili</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[beginner]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[videos]]></category>

		<guid isPermaLink="false">http://www.filination.com/tech/2007/12/21/drupal-seo-a-complete-beginners-step-by-step-video-tutorial/</guid>
		<description><![CDATA[Doing Drupal SEO is easy. Drupal's platform has some great out of the box SEO. You can do a few more Drupal SEO tweaks like use supporting modules I wrote about in "Drupal SEO : The top Drupal SEO modules and how to use them", make sure you're "Drupal SEO: using robots.txt to avoid content [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://teqsnacks.com/files/DrupalSEOAcompletebeginnersvideotutorial_FF5C/image05.png" style="border: 0px none;margin: 0px 0px 5px 10px" alt="Drupal SEO : A complete beginners step-by-step video tutorial" align="right" border="0" height="129" width="131" /> Doing <a href="http://teqsnacks.com/category/cms/drupal/">Drupal</a> <a href="http://teqsnacks.com/category/seo/">SEO</a> is easy. Drupal's platform has some great out of the box  <a href="http://teqsnacks.com/category/seo/">SEO</a>. You can do a few more <a href="http://teqsnacks.com/category/cms/drupal/">Drupal</a> <a href="http://teqsnacks.com/category/seo/">SEO</a> tweaks like use supporting modules I wrote about in "<a href="http://teqsnacks.com/2007/03/28/drupal-seo-the-top-drupal-seo-modules-and-how-to-use-them/" title="Drupal SEO : The top Drupal SEO modules and how to use them">Drupal SEO : The top Drupal SEO modules and how to use them</a>", make sure you're "<a href="http://teqsnacks.com/2007/02/22/drupal-seo-using-robotstxt-to-avoid-content-duplication/">Drupal SEO: using robots.txt to avoid content duplication</a>" and <a href="http://teqsnacks.com/category/seo/">add a few more general website SEO tweaks</a>.</p>
<p>I've just come across an excellent overall overview of <a href="http://teqsnacks.com/category/cms/drupal/">Drupal</a> <a href="http://teqsnacks.com/category/seo/">SEO</a> presented by <a href="http://www.masteringdrupal.com/screencast/seo-course">Mastering Drupal</a> through video screencasts. They take you step by step doing  <a href="http://teqsnacks.com/category/cms/drupal/">Drupal</a> <a href="http://teqsnacks.com/category/seo/">SEO</a> in a way I've always wanted to do, but never had the time for. I would go as far as saying it's one of the best step-by-step <a href="http://teqsnacks.com/category/seo/">SEO</a> tutorials I've watched, and I'm glad someone finally did something like that for Drupal.</p>
<p><img src="http://teqsnacks.com/files/DrupalSEOAcompletebeginnersvideotutorial_FF5C/image012.png" style="border: 0px none;margin: 10px" alt="Drupal SEO : A complete beginners step-by-step video tutorial" align="left" border="0" height="109" width="100" /><strike><strong>Find the </strong><a href="http://teqsnacks.com/category/cms/drupal/"><strong>Drupal</strong></a><strong> </strong><a href="http://teqsnacks.com/category/seo/"><strong>SEO</strong></a><strong> video episodes here: </strong></strike><strike><strong>first</strong><strong>, </strong><strong>second</strong><strong>, </strong><strong>third</strong><strong>, </strong><strong>forth</strong><strong>, and </strong><strong>fifth</strong></strike><strong> </strong>(<a href="http://www.masteringdrupal.com/screencast/seo-course">they ask that you go to the site and subscribe to view those</a>)<strong>.</strong> All together, about an hour of <a href="http://teqsnacks.com/category/cms/drupal/">Drupal</a> <a href="http://teqsnacks.com/category/seo/">SEO</a> tweaking.</p>
<p>Great work, guys.</p>
]]></content:encoded>
			<wfw:commentRss>http://teqsnacks.com/2007/12/21/drupal-seo-a-complete-beginners-step-by-step-video-tutorial/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Drupal : When Cron jobs do not complete and Cron jobs tips</title>
		<link>http://teqsnacks.com/2007/07/07/drupal-when-cron-jobs-do-not-complete-and-cron-jobs-tips/</link>
		<comments>http://teqsnacks.com/2007/07/07/drupal-when-cron-jobs-do-not-complete-and-cron-jobs-tips/#comments</comments>
		<pubDate>Sat, 07 Jul 2007 09:24:13 +0000</pubDate>
		<dc:creator>Fili</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[cronjob]]></category>
		<category><![CDATA[cronjobs]]></category>
		<category><![CDATA[timeout]]></category>

		<guid isPermaLink="false">http://www.filination.com/tech/2007/07/07/drupal-when-cron-jobs-do-not-complete-and-cron-jobs-tips/</guid>
		<description><![CDATA[Cron jobs are an essential part of most Drupal installations. Cron jobs take care of Drupal maintenance, synchronization, pinging, spam and other important aspects. Every module implements it own cron hook and cron goes and executes the function. It sometimes happens that the cron jobs you're running fail and you have no idea how. All [...]]]></description>
			<content:encoded><![CDATA[<p>Cron jobs are an essential part of most Drupal installations. Cron jobs take care of Drupal maintenance, synchronization, pinging, spam and other important aspects. Every module implements it own cron hook and cron goes and executes the function. It sometimes happens that the cron jobs you're running fail and you have no idea how. All you get is a blank : "Last cron job did not complete". What should you do?</p>
<p>[UPDATE 05/09/2010 - I recommend installing the <a href="http://drupal.org/project/supercron" target="_blank">SuperCache module</a> that will either take care of 90% of the problems or help you track down the probelm. This should quickly be integrated into core, if you ask me]</p>
<p>Usually, it's a problem with on the modules you recently installed. Most of the time, it's also accompanied by another PHP error before or after. It's best to get a long look at the error log, and see whether anything's wrong. If there are errors, look them up on the Drupal.org site, and if one of the modules is causing it - upgrade it, or report the problem to the development team.</p>
<p>There are many things you can do to debug this problem, but I was looking for an easy solution for one of my not-so-techie colleague.</p>
<p>First, take a look at <a href="http://drupal.org/node/24208">CronPlus</a>:</p>
<blockquote><p>CronPlus is meant to relieve application programmers of the need to reinvent the same old wheel of filtering down the Drupal cron calls — which can happen at any interval chosen by the installer — into real-world (approximate) time intervals. CronPlus provides an approximation at each interval. It does not claim, nor even attempt, to be accurate enough for precise applications such as month-end financial processing or real-time control. Instead, it is meant for duties such as routine log cleanup, updating data from external sources, pushing data to other systems, and similar things which require only an approximate time base.</p></blockquote>
<p>Looking into this issue I came across those two interesting tips. This next tip will give you <a href="http://drupal.org/node/43075#comment-183677">a more detailed cron message on the module currently being processed</a>:</p>
<blockquote><p>The flow won't reach all following cron hook calls and you'll get the problem you've described. The key is to find out which hook_cron is causing the crash, you can do that by adding this in the module_invoke_all() located in includes/module.inc</p>
<p><code> foreach (module_implements($hook) as $module) {</p>
<p>$function = $module .'_'. $hook;</code></p>
<p>replace it with something like this :</p>
<p><code> foreach (module_implements($hook) as $module) {</p>
<p>if ($hook == 'cron')</p>
<p>watchdog('cron_runs', $module);</p>
<p>$function = $module .'_'. $hook;</code></p>
<p>You'll get a new category in the event log called "cron_runs" on your next cron that will list the cron call order. The last one in this list is your culprit. Remember that this is considered core hacking and you should remove the code as soon as you discover the problem location. Core hacking is calling for trouble.</p></blockquote>
<p>If you're sure all is working like it should, then another good tip is about <a href="http://drupal.org/node/54014#comment-106868">playing around with the timeout settings</a> :</p>
<blockquote>
<div class="content">
<p>Go to your settings.php file (under sites/default or wherever it is). At the bottom of it you will see a list of ini_set commands. Add the following to the list:</p>
<p>ini_set("max_execution_time", 60);</p>
<p>The number at the end is the number of seconds a program can run before timing out. Setting it to 0 means "never timeout" which you should use very carefully, like on a development site where you have control over the server. Try increasing the number at the end until your cron completes.</p>
<p>There is also a way to do this in a .htaccess file (the command is worded slightly differently), but some isps, like mine, have the system set up in a way that will cause a fatal error if you try to control php ini_set from the .htaccess file. As far as I know, you will never go wrong by putting it in the settings.php file.</p>
</div>
</blockquote>
<p>How do you debug your problematic Drupal Cron jobs?</p>
]]></content:encoded>
			<wfw:commentRss>http://teqsnacks.com/2007/07/07/drupal-when-cron-jobs-do-not-complete-and-cron-jobs-tips/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>PHP session cookies : A global Drupal login problem fix</title>
		<link>http://teqsnacks.com/2007/05/22/php-session-cookies-a-global-drupal-login-problem-fix/</link>
		<comments>http://teqsnacks.com/2007/05/22/php-session-cookies-a-global-drupal-login-problem-fix/#comments</comments>
		<pubDate>Wed, 23 May 2007 00:39:05 +0000</pubDate>
		<dc:creator>Fili</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[annoying_bug]]></category>
		<category><![CDATA[configurations]]></category>
		<category><![CDATA[critical_bug]]></category>
		<category><![CDATA[log_in_php]]></category>
		<category><![CDATA[session_cookies]]></category>

		<guid isPermaLink="false">http://www.filination.com/tech/2007/05/22/php-session-cookies-a-global-drupal-login-problem-fix/</guid>
		<description><![CDATA[Drupal has made it to 5.1 without dealing with one serious PHP problem of handling session cookies, causing various Drupal login problems in different configurations. I've been following Drupal forums for a long time and I've never seen a more wide-spread annoying bug. Myself, I've faced this bug on more than one occasion and can [...]]]></description>
			<content:encoded><![CDATA[<p>Drupal has made it to 5.1 without dealing with one serious PHP problem of handling session cookies, causing various Drupal login problems in different configurations. I've been following Drupal forums for a long time and I've never seen a more wide-spread annoying bug. Myself, I've faced this bug on more than one occasion and can honestly say it's extremely frustrating. Definitely a critical bug.</p>
<p>For example, I was getting the following error when trying to log in:</p>
<blockquote>
<p>PHP Warning: session_start() [&lt;a href='function.session-start'&gt;function.session-start&lt;/a&gt;]: Cannot send session cache limiter - headers already sent (output started at /includes/bootstrap.inc:760) in /includes/bootstrap.inc on line 760</p>
</blockquote>
<p>Seemed like a session cookie problem.</p>
<p>Hoping that I'll save some time for those facing this issue, here's&nbsp;the <a href="http://drupal.org/node/56357#comment-213495">short description of the problem</a> from John Albin:</p>
<blockquote>
<p>This bug is more pernicious than originally thought. There&rsquo;s a critical bug with an edge-case configuration. Here&rsquo;s a not-<em>so</em>-unusual situation:</p>
<p>If a user goes to a PHP-based site at <u>http://example.com</u> (it doesn&rsquo;t even have to be running Drupal, just some PHP code that uses sessions), by default PHP sets a cookie named PHPSESSID for .example.com. </p>
<p>If that user then goes to a Drupal site at <u>http://intranet.example.com</u> and attempts to login, Drupal sets a cookie named PHPSESSID for .intranet.example.com with authenticated permissions. BUT, the user&rsquo;s browser sends both the .example.com and the .intranet.example.com cookies back to the intranet Drupal site and when Drupal tries to access the <code>$_COOKIE['PHPSESSID']</code> value via PHP&rsquo;s session functions, it gets the .example.com value; the wrong session id! </p>
<p>From the user&rsquo;s point of view, the user sees no &ldquo;Unrecognized username or password&rdquo; message (Drupal does enter a &ldquo;session opened&rdquo; watchdog entry), but because Drupal can&rsquo;t access the correct cookie, the user keeps seeing the login screen. If the .example.com cookie is set to expire in 2037 (some PHP apps do that) and the user doesn&rsquo;t think to delete cookies for a completely different web server, the user will NEVER be able to log into <u>intranet.example.com</u>! </p>
<p>From the cookie spec: </p>
<blockquote>
<p>When sending cookies to a server, all cookies with a more specific path mapping should be sent before cookies with less specific path mappings. For example, a cookie &quot;name1=foo&quot; with a path mapping of &quot;/&quot; should be sent after a cookie &quot;name1=foo2&quot; with a path mapping of &quot;/bar&quot; if they are both to be sent. </p>
</blockquote>
<p>Even though both cookies are submitted by the browser, PHP clobbers the value of the more-specific cookie with the less-specific cookie that follows. So there&rsquo;s no way that Drupal could try to differentiate the two cookies. </p>
<p>I believe this is rightly a PHP bug and <a href="http://bugs.php.net/bug.php?id=40806">have submitted a bug report with PHP</a>. But Drupal <em>has to</em> have a work-around. I verified this affects both 5.1 and 4.7.6.</p>
</blockquote>
<p>After trying almost everything, I've finally found <a href="http://drupal.org/node/56357#comment-236726">John's&nbsp;patch on #64</a> and it worked okay for my configurations. Unbelievable.&nbsp; Thanks John.</p>
]]></content:encoded>
			<wfw:commentRss>http://teqsnacks.com/2007/05/22/php-session-cookies-a-global-drupal-login-problem-fix/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Drupal : Change DB and table collation to Unicode (UTF-8)</title>
		<link>http://teqsnacks.com/2007/04/27/drupal-change-db-and-table-collation-to-unicode-utf-8/</link>
		<comments>http://teqsnacks.com/2007/04/27/drupal-change-db-and-table-collation-to-unicode-utf-8/#comments</comments>
		<pubDate>Fri, 27 Apr 2007 09:51:54 +0000</pubDate>
		<dc:creator>Fili</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.filination.com/tech/2007/04/27/drupal-change-db-and-table-collation-to-unicode-utf-8/</guid>
		<description><![CDATA[Drupal supports Unicode (UTF-8) out of the box and so Unicode should be used for all your Drupal installations. Problem is, some things you do with your Drupal installation might result in a database or a table that have non-unicode&#160; collation. Here are a few general tips on making sure everything is using Unicode : [...]]]></description>
			<content:encoded><![CDATA[<p>Drupal supports Unicode (UTF-8) out of the box and so Unicode should be used for all your Drupal installations. Problem is, some things you do with your Drupal installation might result in a database or a table that have non-unicode&nbsp; collation.  </p>
<p>Here are a few general tips on making sure everything is using Unicode : </p>
<h3><font color="#444444">Install manually, don't use Fantastico&nbsp;</font></h3>
<p>One of the things that Fantastico does is install the database&nbsp;in the wrong collation. Create your database by yourself, make sure that the collation is set right, and then proceed with the Drupal installation.</p>
<h3><font color="#444444">Verify by running a Unicode change script</font></h3>
<p>Some Drupal modules still have bugs of creating tables with the wrong collation. Here's a piece of quick code you can run from your shell if you notice mixed collation in your DB. I will go table by table and change the collation to Unicode. If you don't have shell, try a <a href="http://teqsnacks.com/2006/09/14/shell-with-php/" title="shell solution for PHP">shell solution for PHP</a>.</p>
<p>Change all tables to Unicode: </p>
<blockquote>
<p>for table in `mysql -h&lt;DBserver&gt;-u&lt;DBuser&gt;&nbsp;&lt;DBname&gt; -p&lt;DBpassword&gt; -e &quot;show tables&quot; | grep -v Tables`; do mysql -h&lt;DBserver&gt;-u&lt;DBuser&gt;&nbsp;&lt;DBname&gt; -p&lt;DBpassword&gt; -e &quot;alter table $table convert to character set utf8&quot; ; done </p>
</blockquote>
<p>Change DB to Unicode : </p>
<blockquote>
<p>mysql -h&lt;DBserver&gt; -u&lt;DBuser&gt; -p&lt;DBpassword&gt; alter database &lt;DBname&gt; character set utf8; </p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://teqsnacks.com/2007/04/27/drupal-change-db-and-table-collation-to-unicode-utf-8/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>The external links dilemma : How to mark, preview, open-new and AJAX your outgoing links</title>
		<link>http://teqsnacks.com/2007/04/12/the-external-links-dilemma-how-to-mark-notify-open-new-and-ajax-your-outgoing-links/</link>
		<comments>http://teqsnacks.com/2007/04/12/the-external-links-dilemma-how-to-mark-notify-open-new-and-ajax-your-outgoing-links/#comments</comments>
		<pubDate>Thu, 12 Apr 2007 13:43:12 +0000</pubDate>
		<dc:creator>Fili</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.filination.com/tech/2007/04/12/the-external-links-dilemma-how-to-mark-notify-open-new-and-ajax-your-outgoing-links/</guid>
		<description><![CDATA[External links are always a dilemma as a&#160;user that follows an external link using a simple click will leave your site. Can the visitors know what is an internal link and an external link? Do your visitors know that they're leaving the site and when they do - will they come back? Here's my impression [...]]]></description>
			<content:encoded><![CDATA[<p>External links are always a dilemma as a&nbsp;user that follows an external link using a simple click will leave your site. Can the visitors know what is an internal link and an external link? Do your visitors know that they're leaving the site and when they do - will they come back?</p>
<p>Here's my impression of the &quot;average visitor&quot; (AV) I met throughout my IT years:</p>
<ul>
<li>Only a few AV look at the address of the link to see what address it's referring to the status bar. Some won't even be able to tell if it's an internal or external link if they do look at it.</li>
<li>Only a few AV use the &quot;Open Link in New Tab&quot; or even &quot;Open&nbsp;Link in New Window&quot;. Even fewer AVs are aware of the middle-click option. IE6 users, which still constitute for an overwhelming percentage of browser users, don't even have tabs and they hate opening a new window with it flawed positioning and resizing. </li>
<li>While the AV does know about the &quot;Back&quot; button,&nbsp;AV will usually use it in a case of a mistake. If the link found is a good read,&nbsp;AV will stay there.</li>
</ul>
<p>Which leads to the conclusion that most people that are interested in an external&nbsp;link provided on you site will leave the site, sometimes not knowing that they're transferring somewhere else. This problem is also relevant when pointing out to images or videos.</p>
<p>Aside from adding HTML code by hand to the links here's what you can do:</p>
<ol>
<li><font color="#444444">Use a module or a plugin to mark the external links to indicate that they're external, and if you wish - forward outgoing links to a new window. If you're using WordPress, consider installing the &quot;</font>External <a href="http://www.semiologic.com/software/external-links/">Links Plugin For WordPress</a>&quot; or &quot;<a href="http://txfx.net/code/wordpress/identify-external-links/">Identify External Links</a>&quot;. If you're using Drupal, consider installing the &quot;<a href="http://drupal.org/project/extlink">External Links Module</a>&quot;.</li>
<li><font color="#444444">Use <a href="http://www.snap.com/">Snap</a> or other preview tools that open a small preview window of where the link is leading to. You can also use <a href="http://www.mybloglog.com/">MyBlogLog</a> to show the number of visitors who clicked on an external link. AVs will understand that clicking the link will lead them somewhere else. While this might work well on some sites, it is extremely annoying on others. There is a long debate over this tool all over the blogosphere.</font></li>
</ol>
<p>* Please note that automatically opening a new window for a link is considered bad practice among some web developers, but I think it justifiable in some cases.</p>
<p>Another neat option, used for links and images, is to AJAX open the link ontop of the site. There are <a href="http://www.spicyexpress.net/general/jquerry-at-it-best-downloadable-jquerry-plugins-and-widgets-for-you-2">endless JQuery code snippets</a> and plugins that do this kind of thing, like :</p>
<ul>
<li><font color="#444444"><a href="http://jquery.com/demo/thickbox/">Thickbox</a></font></li>
<li><a href="http://www.jasons-toolbox.com/SlightlyThickerbox/">Slightly ThickerBox</a></li>
</ul>
<p>Here are the ones that available for Drupal (to see what this does, run <a href="http://www.doknowevil.net/litebox/">one of the demo sites</a>)&nbsp;:</p>
<ul>
<li><font color="#444444"><a href="http://drupal.org/project/lightbox2">Lightbox2</a></font></li>
<li><font color="#444444"><a href="http://drupal.org/project/thickbox">Thickbox</a></font></li>
<li><a href="http://drupal.org/project/greybox">Greybox Redux</a></li>
<li><a href="http://www.doknowevil.net/litebox/">Litebox</a></li>
</ul>
<p>Other Drupal quick tricks that aim at the same functionality:</p>
<ul>
<li><a href="http://drupal.org/node/97759">Valid XHTML Link Popups using jQuery</a></li>
<li><a href="http://drupal.org/node/105248">External links in new window with message box.</a></li>
<li><a href="http://drupal.org/node/31598">Open aggregator links in new browser window.</a></li>
</ul>
<p><font color="#000000">And here's also something for WordPress :</font></p>
<ul>
<li><a href="http://www.dan-atkinson.com/blog">Dan Atkinson</a>&nbsp;with the <a href="http://www.dan-atkinson.com/blog/index.php/jquery-111-for-wordpress/">jQuery 1.1.1 for WordPress</a>&nbsp;and <a href="http://www.dan-atkinson.com/blog/index.php/thickbox-211-for-wordpress/">Thickbox 2.1.1 for WordPress</a>.</li>
<li><a href="http://zeo.unic.net.my/notes/lightbox-js-version-20/">Lightbox JS version 2.0</a></li>
<li><a href="http://www.stimuli.ca/lightbox/">stimuli.ca Lightbox 2.3 plugin for WordPress</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://teqsnacks.com/2007/04/12/the-external-links-dilemma-how-to-mark-notify-open-new-and-ajax-your-outgoing-links/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Drupal SEO : Verifying 404 Not-Found/Forbidden headers are not OK and custom 404 pages</title>
		<link>http://teqsnacks.com/2007/04/04/drupal-seo-verifying-404-not-foundforbidden-headers-are-not-ok-and-custom-404-pages/</link>
		<comments>http://teqsnacks.com/2007/04/04/drupal-seo-verifying-404-not-foundforbidden-headers-are-not-ok-and-custom-404-pages/#comments</comments>
		<pubDate>Wed, 04 Apr 2007 22:17:25 +0000</pubDate>
		<dc:creator>Fili</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.filination.com/tech/2007/04/04/drupal-seo-verifying-404-not-foundforbidden-headers-are-not-ok-and-custom-404-pages/</guid>
		<description><![CDATA[Search engines care about dead pages in your site that were not found, &#160;so that those can be differentiated from the rest of the site. Search engines expect a "404 not found" message, and you probably rely on&#160; Drupal to support that. Are you really sure that your "404 - page not found" page really [...]]]></description>
			<content:encoded><![CDATA[<p>Search engines care about dead pages in your site that were not found, &nbsp;so that those can be differentiated from the rest of the site. Search engines expect a "404 not found" message, and you probably rely on&nbsp; Drupal to support that. Are you really sure that your "404 - page not found" page really returns the "404 not found" header and not "200 OK" or "404 - OK"? If you're running Drupal - I suggest you double check.</p>
<p>Some of those who submitted their sitemap to <a href="https://www.google.com/webmasters/tools/siteoverview">Google's Webmaster Tools</a> might have came across a message saying that the sitemap can not be verified since all pages return "OK" success instead of "404 not found" headers -&nbsp;which is another example of how Google requires&nbsp;a proper 404 page. To check how your site is responding you can try one of the following ways :</p>
<ol>
<li><font color="#444444">Use an online tool, like - <a href="http://www.urltrends.com/httpheaderviewer.php">HTTP Header Viewer</a> or </font><a href="http://www.seoconsultants.com/tools/headers.asp">HTTP Status Codes Checker<strong>.</strong></a></li>
<li>Use the <a href="http://livehttpheaders.mozdev.org/">Live HTTP headers</a> Firefox plugin.</li>
</ol>
<p><font color="#000000">Track a URL on your site that is suppose to return a "404 not found" message, and check the header. In some cases, like when running PHP CGI server, a wrong header will be returned, like "404 OK". This might happen since Drupal&nbsp;doesn't cover all possible configurations and follow up on PHP bugs.</font></p>
<p><font color="#000000"></font>&nbsp;</p>
<h3><font color="#000000"><strong>Drupal's "404 OK" possible problem</strong></font></h3>
<p><a href="http://tips.webdesign10.com/">Webmaster Tips</a>&nbsp;was the first one I noticed to raise the <a href="http://drupal.org/node/64645">"404 OK" issue for Drupal</a> on the Drupal.org site. <a href="http://drupal.org/user/61351">Guitarmiami</a>&nbsp;wrote :</p>
<blockquote><p>When running Drupal on a server with PHP as CGI you have to change line 288(?) in /includes/common.inc from</p>
<p><code>drupal_set_header('HTTP/1.0 404 Not Found');</code>
<p>to
<p><code>drupal_set_header('Status: 404 Not Found');</code>
<p>Otherwise it will not send the correct 404 Not Found headers. That includes popular hosts like Site5, Bluehost, etc. More information can be found here: <a href="http://us3.php.net/header">http://us3.php.net/header</a></p>
</blockquote>
<p><font color="#000000">This was true for my Drupal&nbsp;sites running on a specific host (Siteground), which were returning "404 OK" instead of "404 not found", due to a PHP CGI bug that requires a different command. To fix it, you need to change the common.inc file as suggested and the problem will be sorted.</font></p>
<p><font color="#000000"></font>&nbsp;</p>
<h3><font color="#000000"><strong>Drupal's "403 Forbidden" possible problem</strong></font></h3>
<ul></ul>
<ul></ul>
<ul></ul>
<ul></ul>
<ul></ul>
<ul></ul>
</p>
<p>It's interesting to read that one of the commenters has suggested another <a href="http://tips.webdesign10.com/drupal-seo-404-ok-and-htaccess#comment-51">issue with the way 403 Forbidden is returned</a>. Although he didn't manage to get this sorted, I found that changing the drupal_access_denied in common.inc in quite the same way works okay. So change :</p>
<blockquote><p><code>drupal_set_header('HTTP/1.0 403 Forbidden');</code></p>
<p>to
<p><code>drupal_set_header('Status: 403 Forbidden');</code></p>
</blockquote>
<p><code></code>&nbsp;<br />
<h3><font color="#000000"><strong>Drupal Custom 404 pages</strong></font></h3>
<p>There are&nbsp;a couple of modules that can enhance Drupal's&nbsp;"404 not found" behavior. Consider using the following&nbsp;modules&nbsp;:
<p><u><strong><a href="http://drupal.org/project/customerror">CustomError</a></strong></u><br />
<blockquote>
<p>This module allows the site admin to create custom error pages for 404 (not found), and 403 (access denied), without the need to create nodes for each of them.
<p>Since the error pages are not real nodes, they do not belong a category term, they do not show in the search, and will not show up in node listings, or in Popular Content block. </p>
</blockquote>
<p><a href="http://drupal.org/project/search404"><strong>Search 404</strong></a></p>
<blockquote><p>Instead of showing a standard "404 Page not found", this module performs a search on the keywords in the URL, e.g. if a user goes to http://example.com/does/not/exist, this module will do a search for "does not exist".</p>
<p>It includes beta stage search engine keywords detections.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://teqsnacks.com/2007/04/04/drupal-seo-verifying-404-not-foundforbidden-headers-are-not-ok-and-custom-404-pages/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Drupal SEO : The top Drupal SEO modules and how to use them</title>
		<link>http://teqsnacks.com/2007/03/28/drupal-seo-the-top-drupal-seo-modules-and-how-to-use-them/</link>
		<comments>http://teqsnacks.com/2007/03/28/drupal-seo-the-top-drupal-seo-modules-and-how-to-use-them/#comments</comments>
		<pubDate>Thu, 29 Mar 2007 00:43:32 +0000</pubDate>
		<dc:creator>Fili</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.filination.com/tech/2007/03/28/drupal-seo-the-top-drupal-seo-modules-and-how-to-use-them/</guid>
		<description><![CDATA[Drupal has the best out-of-the-box SEO performance of any CMS software that I've used, and yet there are a few easy to implement modules that would give an additional boost in Drupal's SEO performance. Here are the top Drupal modules for Drupal SEO and best practices on how to use them. - First off, if [...]]]></description>
			<content:encoded><![CDATA[<p>Drupal has the best out-of-the-box SEO performance of any CMS software that I've used, and yet there are a few easy to implement modules that would give an additional boost in Drupal's SEO performance. Here are the top Drupal modules for Drupal SEO and best practices on how to use them.</p>
<p>-</p>
<p>First off, if you haven't done so, quickly enable <a href="http://drupal.org/node/15365">Cleanurls</a> and <a href="http://drupal.org/handbook/modules/path">the core Path module</a> in your Drupal installation from the admin interface. Now, let's get down to the modules :</p>
<p>&nbsp;</p>
<h3><a href="http://drupal.org/project/page_title"><strong><u>Page Title</u></strong></a></h3>
<h2> </h2>
<p>The page-title is an extremely crucial SEO element and this module will allow you to set in any way you prefer. </p>
<blockquote>
<p>This module gives you control over the page title. It gives you the chance to provide templates for how the title should be structured, and on node pages, gives you the chance to specify the page title rather than defaulting to the node title.</p>
</blockquote>
<p>Tips : </p>
<ul>
<li>I find the default settings to be satisfactory.  </li>
<li>Do note that you might need to play around with your theme to make this module work.</li>
</ul>
<p><u><strong></strong></u>&nbsp;</p>
<h3><strong><a href="http://drupal.org/project/pathauto"><u>Pathauto</u></a></strong></h3>
<p>The page URL path is another important SEO and that can be set manually through <a href="http://drupal.org/handbook/modules/path">the core Path module</a>, but Pathauto takes that a step further with an autocreation of URL aliases based of your specs.</p>
<blockquote>
<p>The pathauto module automatically generates path aliases for various kinds of content (nodes, categories, users) without requiring the user to manually specify the path alias. This allows you to get aliases like /category/my-node-title.html instead of /node/123. The aliases are based upon a &quot;pattern&quot; system which the administrator can control.</p>
</blockquote>
<p>Tips :</p>
<ul>
<li><font color="#444444">I recommend not setting anything to include dates, categories, breadcrumbs and the likes in your Pathauto alias settings unless you're absolutely sure this is what you need. You might change your mind about the category, or where something should be in a book, or maybe even want to report an old blog post. In my opinion - set it to the type followed by the title, AKA - [type]/[title].</font>  </li>
<li><font color="#444444">If you define feed aliases, remember that they will contain duplicate content for search engines that might hurt your SE rankings, so you'll have to <a href="http://teqsnacks.com/2007/02/22/drupal-seo-using-robotstxt-to-avoid-content-duplication/">add a disallow rule for those in your Drupal robots.txt</a>.</font>  </li>
<li><font color="#444444">It took a while for the the developers to add the warning on not using the index aliases. In my opinion, this feature should be completely removed from pathauto for endless reasons (like alias duplication&nbsp;and SEO content duplication problem).</font></li>
</ul>
<p>&nbsp;</p>
<h3><strong><a href="http://drupal.org/project/globalredirect"><u>Global Redirect</u></a></strong></h3>
<h2> </h2>
<p>Duplicate content gets you penalty with the search engines, and that's exactly what Global Redirect is for.</p>
<blockquote>
<p>Simple module which&hellip;</p>
<ul>
<li>&hellip;checks if the currently url has an alias set and does a 301 redirect to it.  </li>
<li>&hellip;checks if the currently url has a trailing slash, removes it and checks if that has an alias and, if so, does a 301 redirect to that.  </li>
<li>&hellip;Finally, checks if the current URL is the same as the site_frontpage, if so - then redirects to &quot;nothing&quot; (ie the frontpage). </li>
</ul>
</blockquote>
<p>Although might be resource consuming, and could be configured by hand in your .htaccess, this will save you a world of trouble and prevent your content duplication problem.</p>
<p>&nbsp;</p>
<h3><a href="http://drupal.org/project/gsitemap"><strong><u>XML Sitemap (formerly Google Sitemap)</u></strong></a></h3>
<p>To make sure all your site pages are indexed by search engines, you should create an <a href="http://en.wikipedia.org/wiki/Sitemap">XML sitemap</a> and submit it to <a href="http://www.google.com/webmasters/sitemaps/">Google</a>&nbsp;and&nbsp;<a href="http://siteexplorer.search.yahoo.com/">Yahoo</a>. XML Sitemap will export that sitemap for you.</p>
<blockquote>
<p>The XML Sitemap module creates a XML sitemap in accordance with the <a href="http://www.sitemaps.org">Sitemaps.org specification</a>.</p>
</blockquote>
<p>Tips :</p>
<ul>
<li><font color="#444444">It will not completely solve content duplication problem, but you might want to disable &quot;Include links to taxonomy term pages&quot;</font></li>
</ul>
<p>&nbsp;</p>
<h3><strong><a href="http://drupal.org/project/nodewords"><u>Meta tags (Nodewords)</u></a></strong></h3>
<p>Metatags still play a role in some search engines, and they do provide vital information about every page with a preview description and relevant keywords. Metatags will help you define those, and will setup default metatags when those don't exist.</p>
<blockquote>
<p>This module allows you to set some meta tags for each node. Giving more attention to the important keywords and/or description on some of your nodes allows you to get better search engine positioning (given that you really only provide the keywords which exist in the node body itself, and do not try to lie).</p>
</blockquote>
<p>Tips :</p>
<ul>
<li><font color="#444444">With all that's said about Site mojo and outgoing links, I still keep &quot;all=index, follow&quot; on most of the&nbsp;sites I run. I believe rel=&quot;nofollow&quot; should mainly be used per link or per page and not as a general rule, but it does depend of the kind of site that you run.</font>  </li>
<li><font color="#444444">Make sure that &quot;Use the teaser of the page if the meta description is not set&quot; is enabled, and that tags are outputted in the html head.</font></li>
</ul>
<p>&nbsp;</p>
<h3><a href="http://stefan.ploing.de/linux/drupal"><u><strong>Multiping</strong></u></a></h3>
<p>Pinging is used to notify ping sites that your site has updated so that crawlers will come and index the new content to include the changes made. Drupal still doesn't have good ping support and Multiping aims to fix that, allowing to add as many ping servers as you wish.</p>
<blockquote>
<p>A replacement for the ping module of Drupal. It allows pinging of multiple sites (configurable via a web interface). If a site is unreachable, the ping request will be sent again during the next cron.php run.</p>
</blockquote>
<p>Need a few preset ping servers? just import this to your database after setting Multiping up&nbsp;:</p>
<blockquote>
<p>INSERT INTO `multiping` VALUES (4, '<a href="http://bulkfeeds.net/rpc'">http://bulkfeeds.net/rpc'</a>, '<a href="http://bulkfeeds.net/rpc'">http://bulkfeeds.net/rpc'</a>, 'weblogUpdates.ping', 1175127469, 1, 1, 'N;', 0);<br />
INSERT INTO `multiping` VALUES (8, '<a href="http://blogsearch.google.com/ping/RPC2'">http://blogsearch.google.com/ping/RPC2'</a>, '<a href="http://blogsearch.google.com/ping/RPC2'">http://blogsearch.google.com/ping/RPC2'</a>, 'weblogUpdates.ping', 1175127469, 1, 1, 'N;', 0);<br />
INSERT INTO `multiping` VALUES (9, '<a href="http://rpc.weblogs.com/RPC2'">http://rpc.weblogs.com/RPC2'</a>, '<a href="http://rpc.weblogs.com/RPC2'">http://rpc.weblogs.com/RPC2'</a>, 'weblogUpdates.ping', 1175127469, 1, 1, 'N;', 0);<br />
INSERT INTO `multiping` VALUES (11, '<a href="http://ping.feedburner.com/'">http://ping.feedburner.com/'</a>, '<a href="http://ping.feedburner.com/'">http://ping.feedburner.com/'</a>, 'weblogUpdates.ping', 1175127470, 1, 1, 'N;', 0);<br />
INSERT INTO `multiping` VALUES (12, '<a href="http://rpc.blogrolling.com/pinger/'">http://rpc.blogrolling.com/pinger/'</a>, '<a href="http://rpc.blogrolling.com/pinger/'">http://rpc.blogrolling.com/pinger/'</a>, 'weblogUpdates.ping', 1175127470, 1, 1, 'N;', 0);<br />
INSERT INTO `multiping` VALUES (13, '<a href="http://api.my.yahoo.com/RPC2'">http://api.my.yahoo.com/RPC2'</a>, '<a href="http://api.my.yahoo.com/RPC2'">http://api.my.yahoo.com/RPC2'</a>, 'weblogUpdates.ping', 1175127470, 1, 1, 'N;', 0);<br />
INSERT INTO `multiping` VALUES (17, '<a href="http://rpc.weblogs.com/RPC2'">http://rpc.weblogs.com/RPC2'</a>, '<a href="http://rpc.weblogs.com/RPC2'">http://rpc.weblogs.com/RPC2'</a>, 'weblogUpdates.ping', 1175127470, 1, 1, 'N;', 0);<br />
INSERT INTO `multiping` VALUES (18, '<a href="http://rpc.pingomatic.com/'">http://rpc.pingomatic.com/'</a>, '<a href="http://rpc.pingomatic.com/'">http://rpc.pingomatic.com/'</a>, 'weblogUpdates.ping', 1175127470, 1, 1, 'N;', 0);<br />
INSERT INTO `multiping` VALUES (19, '<a href="http://rpc.technorati.com/rpc/ping'">http://rpc.technorati.com/rpc/ping'</a>, '<a href="http://rpc.technorati.com/rpc/ping'">http://rpc.technorati.com/rpc/ping'</a>, 'weblogUpdates.ping', 1175127470, 1, 1, 'N;', 0);<br />
INSERT INTO `multiping` VALUES (21, '<a href="http://api.feedster.com/ping'">http://api.feedster.com/ping'</a>, '<a href="http://api.feedster.com/ping'">http://api.feedster.com/ping'</a>, 'weblogUpdates.ping', 1175127471, 1, 1, 'N;', 0);<br />
INSERT INTO `multiping` VALUES (22, '<a href="http://api.my.yahoo.com/RPC2'">http://api.my.yahoo.com/RPC2'</a>, '<a href="http://api.my.yahoo.com/RPC2'">http://api.my.yahoo.com/RPC2'</a>, 'weblogUpdates.ping', 1175127471, 1, 1, 'N;', 0);<br />
INSERT INTO `multiping` VALUES (30, '<a href="http://ping.feedburner.com'">http://ping.feedburner.com'</a>, '<a href="http://ping.feedburner.com'">http://ping.feedburner.com'</a>, 'weblogUpdates.ping', 1175127471, 1, 1, 'N;', 0);<br />
INSERT INTO `multiping` VALUES (32, '<a href="http://ping.weblogalot.com/rpc.php'">http://ping.weblogalot.com/rpc.php'</a>, '<a href="http://ping.weblogalot.com/rpc.php'">http://ping.weblogalot.com/rpc.php'</a>, 'weblogUpdates.ping', 1175127471, 1, 1, 'N;', 0);</p>
</blockquote>
<p>&nbsp;</p>
<h3><a href="http://drupal.org/project/search404"><u><strong>Search404</strong></u></a></h3>
<p>Although disputed for its SEO value (positive/negative) I think it's worth mentioning this module and letting you decide this one on your own. It is important, however, that the pages that are not found return a &quot;404 not found&quot; message and not an &quot;ok &quot;message.
</p>
<blockquote>
<p>Instead of showing a standard &quot;404 Page not found&quot;, this module performs a search on the keywords in the URL, e.g. if a user goes to <a href="http://example.com/does/not/exist">http://example.com/does/not/exist</a>, this module will do a search for &quot;does not exist&quot;.</p>
</blockquote>
<p>&nbsp;</p>
<p>-</p>
<p>Last, not SEO related directly, but extremely important to keep your SEO components up to date and bugs free is the Update module, which should really make it into core. If you're using 4.7 or maybe you're interested in upgrading to dev releases, then you should consider installing <a href="http://drupal.org/project/releasemonitor">Release Monitor</a>&nbsp;instead.</p>
]]></content:encoded>
			<wfw:commentRss>http://teqsnacks.com/2007/03/28/drupal-seo-the-top-drupal-seo-modules-and-how-to-use-them/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced
Object Caching 0/0 objects using disk: basic

Served from: teqsnacks.com @ 2012-05-21 20:34:12 -->
