我正在嘗試創建一個會自動更新的站點地圖。我已經做了一些類似於我的RSS提要,但是這個站點地圖拒絕工作。你可以在http://designdeluge.com/sitemap.xml上查看它。我認爲主要的問題是它不識別PHP代碼。下面是完整的源:用PHP創建XML站點地圖
<?php
include 'includes/connection.php';
header("Content-type: text/xml");
echo '<?xml version="1.0" encoding="UTF-8" ?>';
?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84 http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">
<url>
<loc>http://designdeluge.com/</loc>
<lastmod>2010-04-20</lastmod>
<changefreq>weekly</changefreq>
<priority>1.00</priority>
</url>
<url>
<loc>http://designdeluge.com/about.php</loc>
<lastmod>2010-04-20</lastmod>
<changefreq>never</changefreq>
<priority>0.5</priority>
</url>
<?php
$entries = mysql_query("SELECT * FROM Entries");
while($row = mysql_fetch_assoc($entries)) {
$title = stripslashes($row['title']);
$date = date("Y-m-d", strtotime($row['timestamp']));
echo "
<url>
<loc>http://designdeluge.com/".$title."</loc>
<lastmod>".$date."</lastmod>
<changefreq>never</changefreq>
<priority>0.8</priority>
</url>";
} ?>
</urlset>
的問題是,在動態URL的(例如,從DB拉的那些)沒有被生成網站地圖不會驗證。謝謝!
編輯:現在,我只是想讓代碼本身工作。我已將它設置爲本地測試服務器上的PHP文件。上面的代碼正在被使用。現在,沒有任何東西在屏幕上或源文件中顯示。我在想我犯了一個語法錯誤,但我找不到任何東西。任何和所有的幫助表示讚賞!
編輯2:好的,我把它整理出來了。顯然,我不得不用PHP迴應XML聲明。最終的代碼在上面發佈。謝謝你的幫助!
那麼我的服務器上僅有的兩個.xml文件正在使用PHP的,所以我看不出有任何的傷害。會做第一個選項是像添加到一個.htaccess文件? AddType應用程序/ x-httpd-php .xml – williamg 2010-04-30 21:36:47
不確定這可以在'.htaccess'文件中完成*(取決於服務器的配置,可能需要直接在服務器配置中執行)* ;;但你可以嘗試,也許它會工作:-) – 2010-04-30 21:40:40
@iMaster:爲了你的代碼工作,short_tags也必須關閉(它是默認的 - 只是要注意的東西)。此外,當我訪問http://designdeluge.com/sitemap.xml時,我得到一個HTTP 500響應,所以你的配置被破壞了(可能是因爲你正在處理它)。最後,對於大型網站,實時生成整個站點地圖可能不可行 - 因此,如果您希望增長到數千頁或更多,請準備稍後重新實施。 – 2010-04-30 21:42:54