<?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>Happy SA &#187; godaddy</title>
	<atom:link href="http://blog.happysa.org/tag/godaddy/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.happysa.org</link>
	<description>做快乐的系统管理员</description>
	<lastBuildDate>Sun, 13 Nov 2011 14:30:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<atom:link rel='hub' href='http://blog.happysa.org/?pushpress=hub'/>
		<item>
		<title>wordpress下解决godaddy免费空间feed出错的问题</title>
		<link>http://blog.happysa.org/blog/solve_the_feed_problem_of_godaddy.html</link>
		<comments>http://blog.happysa.org/blog/solve_the_feed_problem_of_godaddy.html#comments</comments>
		<pubDate>Fri, 17 Apr 2009 13:57:23 +0000</pubDate>
		<dc:creator>happysa</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[feed]]></category>
		<category><![CDATA[godaddy]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://blog.happysa.org/?p=44</guid>
		<description><![CDATA[问题描述： 在浏览器里打开feed地址，不能像正常的feed订阅那样出来订阅的页面，在firefox下是直接以纯文本形式显示，IE7下显示“已取消到该网页的导航”，而直接通过google reader等倒是能正常订阅。在Feed Validator上检查feed文件的正确性，问题如下： This feed does not validate. line 1, column 1: Blank line before XML declaration [help] line 42, column 1: XML parsing error: :42:1: not well-formed (invalid token) [help] 虽然对于我这blog来说feed订阅这东西短期内基本上是拿来摆设的，不过有这问题心里总是不爽，于是乎网上搜寻解决办法，皇天不负有心人，最后顺利解决问题了，下面就介绍一下我的解决方法（方法非原创，参考了SAM LESHER）。 先说说引起这个问题的原因：godaddy的免费空间（CreatingDrew），因为godaddy会自动加上一段广告代码，所以在feed的XML文件输出时也在文件的最后两行给加上了广告代码，并在最前面加了一个空行，这就是上面检查出的问题，所以只要去了这个空行和广告代码就OK了，步骤大致如下： 1. 根据wordpress输出feed的默认地址下载feed文件到本地，这个文件是包含广告代码的 2. 写脚本，使用sed对文件进行过滤，把开头的空行和广告给删除掉 3. 通过修改后的feed文件输出feed订阅信息 4. 在godaddy管理页面上建一条cron任务，每隔一定时间执行一遍脚本，使更新后的feed地址也是正常的 可以把feed文件下载和过滤都写到一个脚本里，修改feed地址则可以使用插件来完成。 下面是实现脚本： #!/bin/sh BLOGADDRESS=&#34;http://blog.happysa.org&#34; #blog地址，用于下载feed文件 FEEDPATH=/var/www/home/happysa/domains/happysa.org/public_html/feed #下载后的feed文件存放地址，路径根据具体情况修改 FEEDFILE=$FEEDPATH/feed.xml RSSFILE=$FEEDPATH/rss.xml RDFFILE=$FEEDPATH/rdf.xml ATOMFILE=$FEEDPATH/atom.xml COMMENTSFILE=$FEEDPATH/comments.xml [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-94" title="128px-feed-icon_svg" src="http://happysa.org/blog/wp-content/uploads/2009/04/128px-feed-icon_svg.png" alt="128px-feed-icon_svg" width="80" height="80" />问题描述：<br />
在浏览器里打开feed地址，不能像正常的feed订阅那样出来订阅的页面，在firefox下是直接以纯文本形式显示，IE7下显示“已取消到该网页的导航”，而直接通过google reader等倒是能正常订阅。在<a href="http://feedvalidator.org">Feed Validator</a>上检查feed文件的正确性，问题如下：</p>
<blockquote><p>This feed does not validate.<br />
line 1, column 1: Blank line before XML declaration [help]<br />
line 42, column 1: XML parsing error: :42:1: not well-formed (invalid token) [help]</p></blockquote>
<p>虽然对于我这blog来说feed订阅这东西短期内基本上是拿来摆设的，不过有这问题心里总是不爽，于是乎网上搜寻解决办法，皇天不负有心人，最后顺利解决问题了，下面就介绍一下我的解决方法（方法非原创，参考了<a href="http://www.samlesher.com/code/fix-broken-wordpress-rss-in-godaddy-free-hosting-accounts">SAM LESHER</a>）。</p>
<p>先说说引起这个问题的原因：godaddy的免费空间（<a href="http://creatingdrew.com/2008/04/wordpress-feeds-and-godaddy-problem-and-solution/">CreatingDrew</a>），因为godaddy会自动加上一段广告代码，所以在feed的XML文件输出时也在文件的最后两行给加上了广告代码，并在最前面加了一个空行，这就是上面检查出的问题，所以只要去了这个空行和广告代码就OK了，步骤大致如下：</p>
<blockquote><p>1. 根据wordpress输出feed的默认地址下载feed文件到本地，这个文件是包含广告代码的<br />
2. 写脚本，使用sed对文件进行过滤，把开头的空行和广告给删除掉<br />
3. 通过修改后的feed文件输出feed订阅信息<br />
4. 在godaddy管理页面上建一条cron任务，每隔一定时间执行一遍脚本，使更新后的feed地址也是正常的</p></blockquote>
<p>可以把feed文件下载和过滤都写到一个脚本里，修改feed地址则可以使用插件来完成。</p>
<p>下面是实现脚本：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #007800;">BLOGADDRESS</span>=<span style="color: #ff0000;">&quot;http://blog.happysa.org&quot;</span> <span style="color: #666666; font-style: italic;">#blog地址，用于下载feed文件</span>
<span style="color: #007800;">FEEDPATH</span>=<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>happysa<span style="color: #000000; font-weight: bold;">/</span>domains<span style="color: #000000; font-weight: bold;">/</span>happysa.org<span style="color: #000000; font-weight: bold;">/</span>public_html<span style="color: #000000; font-weight: bold;">/</span>feed <span style="color: #666666; font-style: italic;">#下载后的feed文件存放地址，路径根据具体情况修改</span>
<span style="color: #007800;">FEEDFILE</span>=<span style="color: #007800;">$FEEDPATH</span><span style="color: #000000; font-weight: bold;">/</span>feed.xml
<span style="color: #007800;">RSSFILE</span>=<span style="color: #007800;">$FEEDPATH</span><span style="color: #000000; font-weight: bold;">/</span>rss.xml
<span style="color: #007800;">RDFFILE</span>=<span style="color: #007800;">$FEEDPATH</span><span style="color: #000000; font-weight: bold;">/</span>rdf.xml
<span style="color: #007800;">ATOMFILE</span>=<span style="color: #007800;">$FEEDPATH</span><span style="color: #000000; font-weight: bold;">/</span>atom.xml
<span style="color: #007800;">COMMENTSFILE</span>=<span style="color: #007800;">$FEEDPATH</span><span style="color: #000000; font-weight: bold;">/</span>comments.xml
<span style="color: #666666; font-style: italic;">#GDSTRING1=&quot;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;!</span>-- adsok --<span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #ff0000;">&quot;
#GDSTRING2=&quot;</span><span style="color: #000000; font-weight: bold;">&lt;</span>script <span style="color: #007800;">src</span>=<span style="color: #ff0000;">&quot;https://a12.alphagodaddy.com/hosting_ads/gd01.js&quot;</span><span style="color: #000000; font-weight: bold;">&gt;&lt;!</span>--mce:<span style="color: #000000;">0</span>--<span style="color: #000000; font-weight: bold;">&gt;&lt;/</span>script<span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #ff0000;">&quot;
&nbsp;
if [ -f <span style="color: #007800;">$FEEDFILE</span> ]; #删除老的feed文件
then
    rm -f <span style="color: #007800;">$FEEDFILE</span>
fi
wget -q <span style="color: #007800;">$BLOGADDRESS</span>/feed -O <span style="color: #007800;">$FEEDFILE</span> #下载feed文件
sed -i '/!-- adsok --/d;/alphagodaddy/d;1d' <span style="color: #007800;">$FEEDFILE</span> #过滤广告代码和最前面的空行，过滤条件可根据具体情况作改动
sed -i 's/blog.happysa.org\/feed<span style="color: #000099; font-weight: bold;">\&quot;</span>\( rel=<span style="color: #000099; font-weight: bold;">\&quot;</span>self<span style="color: #000099; font-weight: bold;">\&quot;</span> type=<span style="color: #000099; font-weight: bold;">\&quot;</span>application\/rss+xml<span style="color: #000099; font-weight: bold;">\&quot;</span> \/&amp;gt;\)/feed.happysa.org\/<span style="color: #000099; font-weight: bold;">\&quot;</span>\1/' <span style="color: #007800;">$FEEDFILE</span> #修改订阅地址
&nbsp;
if [ -f <span style="color: #007800;">$RSSFILE</span> ];
then
    rm -f <span style="color: #007800;">$RSSFILE</span>
fi
wget -q <span style="color: #007800;">$BLOGADDRESS</span>/feed/rss -O <span style="color: #007800;">$RSSFILE</span>
sed -i '/!-- adsok --/d;/alphagodaddy/d;1d' <span style="color: #007800;">$RSSFILE</span>
&nbsp;
if [ -f <span style="color: #007800;">$RDFFILE</span> ];
then
    rm -f <span style="color: #007800;">$kRDFFILE</span>
fi
wget -q <span style="color: #007800;">$BLOGADDRESS</span>/feed/rdf -O <span style="color: #007800;">$RDFFILE</span>
sed -i '/!-- adsok --/d;/alphagodaddy/d;1d' <span style="color: #007800;">$RDFFILE</span>
&nbsp;
if [ -f <span style="color: #007800;">$ATOMFILE</span> ];
then
    rm -f <span style="color: #007800;">$ATOMFILE</span>
fi
wget -q <span style="color: #007800;">$BLOGADDRESS</span>/feed/atom -O <span style="color: #007800;">$ATOMFILE</span>
sed -i '/!-- adsok --/d;/alphagodaddy/d;1d' <span style="color: #007800;">$ATOMFILE</span>
sed -i 's/blog.happysa.org\/feed\/atom<span style="color: #000099; font-weight: bold;">\&quot;</span> \/&amp;gt;/feed.happysa.org\/atom.xml<span style="color: #000099; font-weight: bold;">\&quot;</span> \/&amp;gt;/' <span style="color: #007800;">$ATOMFILE</span>
&nbsp;
if [ -f <span style="color: #007800;">$COMMENTSFILE</span> ];
then
   rm -f <span style="color: #007800;">$COMMENTSFILE</span>
fi
wget -q <span style="color: #007800;">$BLOGADDRESS</span>/comments/feed -O <span style="color: #007800;">$COMMENTSFILE</span>
sed -i '/!-- adsok --/d;/alphagodaddy/d;1d' <span style="color: #007800;">$COMMENTSFILE</span>
sed -i 's/blog.happysa.org\/feed\/comments<span style="color: #000099; font-weight: bold;">\&quot;</span>\( rel=<span style="color: #000099; font-weight: bold;">\&quot;</span>self<span style="color: #000099; font-weight: bold;">\&quot;</span> type=<span style="color: #000099; font-weight: bold;">\&quot;</span>application\/rss+xml<span style="color: #000099; font-weight: bold;">\&quot;</span> \/&amp;gt;\)/feed.happysa.org\/comments.xml<span style="color: #000099; font-weight: bold;">\&quot;</span>\1/' <span style="color: #007800;">$COMMENTSFILE</span></span></pre></div></div>

<p>以上代码新建一个脚本feed.sh，在空间下放哪都可以，之后在空间根目录下建立feed文件夹，用于存放feed文件。</p>
<p>好像免费空间没有ssh帐号的，有些东西设置就会麻烦一点，首先要打开ftp客户端登陆后在脚本文件上右击修改属性，使之有可执行权限。接着就是利用cron建立一个自动执行计划，让脚本每隔多少时间执行一次，在Hosting Control Center上Content下的Cron manager，如图：</p>
<p><img class="alignnone size-full wp-image-56" title="2009-04-17_213114" src="http://happysa.org/blog/wp-content/uploads/2009/04/2009-04-17_213114.jpg" alt="2009-04-17_213114" width="406" height="302" /></p>
<p>Create Cron Job，主要是Command，时间勾上Run twice an hour，这样可以更新频繁一点，之后保存。</p>
<p><img class="alignnone size-full wp-image-57" title="2009-04-17_213705" src="http://happysa.org/blog/wp-content/uploads/2009/04/2009-04-17_213705.jpg" alt="2009-04-17_213705" width="753" height="315" /></p>
<p>接下来就是设置feed地址了，只要feed正常了，怎么用就很简单了，网上的方法也很多，比如可以使用<a href="http://blog.slaven.net.au/wordpress-plugins/wordpress-feed-locations-plugin/">wp-feedlocations</a>，安装后在里面设置feed地址</p>
<p><img class="alignnone size-full wp-image-58" title="2009-04-17_215302" src="http://happysa.org/blog/wp-content/uploads/2009/04/2009-04-17_215302.jpg" alt="2009-04-17_215302" width="733" height="242" /></p>
<p>上面有个地方用到空间的绝对路径，查看绝对路径可以利用php的system函数，同时如果没到cron的时间而想手动执行脚本也可以利用这个，并且可以用这个来输出信息进行调试，我的方法是空间下新建一个php文件，如foo.php，写入如下代码：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;!--</span>?php
    <span style="color: #990000;">system</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;pwd&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #990000;">system</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;sh /var/www/home/happysa/domains/happysa.org/public_html/scripts/feed.sh  --&gt;log 2&amp;gt;&amp;amp;1&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
?<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span></pre></div></div>

<p>然后在浏览器里访问http://happysa.org/foo.php，就可以看到绝对路径并手动执行脚本了。</p>
<p><script type="text/javascript"><!--
google_ad_client = "ca-pub-7925255475832884";
/* 横幅 */
google_ad_slot = "6774942116";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3  class="related_post_title">相关文章：</h3><ul class="related_post"><li>2009-05-30 -- <a href="http://blog.happysa.org/tips/easy_index_for_tips.html" title="命令行下简单的检索">命令行下简单的检索</a> (9)</li></ul><hr />
<p><small>© happysa for <a href="http://blog.happysa.org">Happy SA</a>, 2009. |
<a href="http://blog.happysa.org/blog/solve_the_feed_problem_of_godaddy.html">Permalink</a> |
<a href="http://blog.happysa.org/blog/solve_the_feed_problem_of_godaddy.html#comments">31 comments</a> |
Add to
<a href="http://del.icio.us/post?url=http://blog.happysa.org/blog/solve_the_feed_problem_of_godaddy.html&title=wordpress下解决godaddy免费空间feed出错的问题">del.icio.us</a>
<br/>
Post tags: <a href="http://blog.happysa.org/tag/feed" rel="tag">feed</a>, <a href="http://blog.happysa.org/tag/godaddy" rel="tag">godaddy</a>, <a href="http://blog.happysa.org/tag/shell" rel="tag">shell</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.happysa.org/blog/solve_the_feed_problem_of_godaddy.html/feed</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
	</channel>
</rss>

