2011-11-03 83 views
2

我目前正在开发一个动态RSS源,它将自动从MySQL数据库中提取文章。代码是我应该为动态RSS使用什么文件扩展名

<?php 

//Include the post retreival script 
require_once '../phpScripts/rss_db_setup.php'; 

//Set the content type 
header('Content-type: text/xml'); 

//Set up the RSS feed information 
echo '<?xml version="1.0" encoding="ISO-8859-1"?>'. 
'<rss version="2.0">'. 

'<channel>'. 
'<title>Company Name</title>'. 
'<link>http://www.company.ca</link>'. 
'<description></description>'. 
'<category></category>'; 

//Retreive posts from the database 
$rssData = new rssData(); 
echo $rssData->generateFeed($dbcon); 

//Close the feed 
echo '</channel></rss>'; 

?> 

我想知道这个文件是否应该保存为.xml或.php?我已经添加了下面一行到我的.htaccess文件,但并不真正了解它是如何工作的

AddType application/x-httpd-php .xml 

这是做这个正确的方式?或者我应该使用另一个htaccess函数,例如modRewrite,或者每天使用CRON作业生成一个新的.xml文件?

+2

所有文件名都没有意义,它的标题和内容是 – 2011-11-03 20:00:15

+0

'.dynamicrssrenderedviaphp'。我当然是小孩。 +1到@Dagon。 –

回答

1

通过AddType application/x-httpd-php .xml系列,Apache将能够提供包含一些PHP代码的XML文件。因此,您可以将该文件保存为.xml,PHP代码将被解释为

也许您应该添加缓存管理器,以避免在没有新文章时生成相同的Feed?

+0

完美!正是我想知道的,不知道如何添加缓存管理器,但会研究它 – foochow

7

RSS不需要扩展。它不关心,如果url是/feed.php/feed.xml甚至只是/feed/。这不像你自己的硬盘上的文件。 HTTP发送内容类型头来指定它是什么类型的文件。

然而,它(正式)需要正确的内容类型标题。你在你的代码中指定了text/xml,它应该是正式的application/rss + xml。

如果您在服务器上的其他地方使用静态xml文件,则使用AddType可能会出现问题。 PHP会在每个xml文件的开始部分窒息,给出一个很好的错误信息导致无效的xml。

+0

感谢您的更新。确定RSS阅读器是否会遇到错误。不要在其他地方使用XML,但为了将来的目的可能是个好主意 – foochow

+1

您可以将文件放在名为'feeds'的文件夹中,或者将htaccess和xml文件放在那里。这种方式htaccess只影响该文件夹,而不是其他。我也检查了我自己的feedlist;大约40%没有扩展名,40%有xml扩展名,剩余使用.rss或.php,有些甚至使用查询字符串。 – Gerben

相关问题