web-dev-qa-db-ja.com

サイトマップを自動的に生成します。XMLである必要がありますか?

(SEOのために)XMLサイトマップを作成したいのですが、これを達成する最初の試みは、<?php include ("assets/includes/menu.inc"); ?>を使用してWebサイトのメインメニュー/ナビゲーションリンクを含めることでした。

<li><a href="index.php">Home</a></li>
<li><a href="gallery.php">Gallery</a></li>
<li><a href="contact.php">Contact</a></li>

次のXMLサイトマップファイルへ:

<?xml version="1.0" encoding="UTF-8"?>

    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

        <url><loc>http://www.example.com/</loc></url> 

    </urlset>

私はすでに ここに質問 の「PHPをXMLに含める方法」を尋ねました-どうやらそれができないので、私の考えはビンに投げ込まれました。 「自動サイトマップの作成方法」を既にGoogleで検索しましたが、見つけようとしているのは、回避しようとしているサイトマップジェネレーターだけです。

問題は、それも可能ですか?ウェブサイトのメイン.incファイルからリンクをプルするサイトマップを作成するには?何か案は? XMLである必要がありますか?たとえばphpにできますか?

3
Leo

ウェブサイトのメイン.incファイルからリンクをプルするサイトマップを作成するには?

拡張子は関係ありません。だから、あなたは次のようなPHPファイルを持つことができます

<?php
header ("Content-Type:text/xml");
echo '<?xml version="1.0" encoding="UTF-8"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
        // code to extract and echo links from the file 
echo '   </urlset>';
?>

HTMLコードからリンクを抽出するには、 this ページを参照してください。

コードは以下のように変更する必要があります。

<?PHP
  // Original PHP code by Chirp Internet: www.chirp.com.au
  // Please acknowledge use of this code by including this header.

  $url = "assets/includes/menu.inc";
  $input = @file_get_contents($url) or die("Could not access file: $url");
  $regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>";
  if(preg_match_all("/$regexp/siU", $input, $matches, PREG_SET_ORDER)) {
    foreach($matches as $match) {
      // $match[2] = link address
      // $match[3] = link text 
      echo '<url><loc>' . $match[2] . '</loc></url>'
    }
  }
?>
1
Ranjith

ここで2つの質問をしています。

  1. サイトマップはXMLである必要がありますか?

    簡単な答えはいいえです。XMLである必要はありません。 XMLファイル、テキストファイル、またはRSS/Atomフィード(基本的にXML)、HTMLサイトマップを使用できます

    HTMLサイトマップ:これらは、あなたのウェブサイトで、あなたのウェブサイトのレイヤーにレイアウトを表示するために使用されます。もしたいでしょう)。残念ながら、これらは検索エンジンに送信するのには適していません。

    RSSフィード:これらは、ブログ上のコメントや記事のフィードに役立ち、常に更新されており、ある意味では自動サイトマップのようなものです。ブログの新しいコンテンツ/コメントの数。

    XMLファイル:これらは、簡単に言うと、リンクなどの追加フィールドと最終更新フィールドを含むXML形式のリンクのセットです。

    テキストファイル:これらは以前はYahooに送信するための推奨方法でしたが、しばらく前にXMLフィードの受け入れを開始しました。

  2. .php拡張子を持つサイトマップを作成できますか?

    基本的に、PHPファイルが返され、XMLヘッダー/ MIMEタイプが返され、有効なXMLが返される限り、問題ありません。 WordPressを見ると、RSSフィードはPHPを使用して作成されています。

PHP DOM関数を使用して、ヘッダーを設定します。

header( "content-type: application/xml; charset=UTF-8" );
$doc = new DomDocument('1.0', 'UTF-8');

ドキュメントは次の場所にあります。

http://www.php.net/manual/en/class.domdocument.php

編集:

以前の投稿を見て、HTMLをXMLに挿入しようとしていますが、動作しません。これを行う理由を拡大できる場合は、いくつかのアドバイスを提供できる場合があります。

6
Liam Sorsby

GWTがXMLとしてフォーマットされている限り、任意の拡張子を持つサイトマップをGWTに追加できます。私のサイトにはPHPコードがXMLを生成する.phpサイトマップがあり、完全に機能します。

0