rssフィードのurlが移転したときに、301リダイレクトで取得

xmlファイルをつくります。

<rss xmlns:a10="http://www.w3.org/2005/Atom" version="2.0">
<channel>
<title>HPScript</title>
<link>http://hpscript.com/rss/test.xml</link>
<description>hpscriptのRSSです</description>
<language>ja-JP</language>
<item>
<guid isPermaLink="false"></guid>
<link>
SCSK
</link> <title>scsk</title> <description/> </item> <item> <guid isPermaLink="false"></guid> <link>
JBS
</link> <title>jbs</title> <description/> </item> </channel> </rss>

vagrantでphpファイルをつくって取得する。

$rss = simplexml_load_file('http://hpscript.com/rss/rss.xml');

foreach($rss->channel->item as $item){
	echo $item->title ."<br>";
}

モチ、ここまではOK

hpscript.com/rss/のディレクトリに.htaccessで301リダイレクトを書きます。

RewriteEngine on
RewriteRule ^index.php$ http://hpscript.com/rss/rss.xml [R=301,L]

http://hpscript.com/rss/index.php をたたくと、http://hpscript.com/rss/rss.xmlに301リダイレクトします。

では、vagrant側で、index.phpをfetchした場合。

$rss = simplexml_load_file('http://hpscript.com/rss/index.php');

foreach($rss->channel->item as $item){
	echo $item->title ."<br>";
}

取れてます!

では、下層ディレクトリから301リダイレクトをした場合。corpというディレクトリをつくり、301リダイレクトの設定をします。
下層ディレクトリでも全く同じで、301リダイレクトをすれば、取得できました。

RewriteEngine on
RewriteRule ^old.php$ http://hpscript.com/rss/rss.xml [R=301,L]

では、異なるドメインから301リダイレクトをした場合を考えたい。
http://phone-search.online/ というurl(電話のサービスづくりで取得したドメイン)にtestというディレクトリをつくり、同じように、301ディダイレクト設定を行う。

RewriteEngine on
RewriteRule ^old.php$ http://hpscript.com/rss/rss.xml [R=301,L]

phone-search.online/test/index.phpからfetchすると、

$rss = simplexml_load_file('http://phone-search.online/test/index.php');

foreach($rss->channel->item as $item){
	echo $item->title ."<br>";
}

ドメインが変わっても、301リダイレクトで取れている。
つまり、RSSのドメインが変わっても、旧URLに301リダイレクトが設定できれば、新しいURLのRSS取得はできる。

simplexml_load_file以外でもいけるか試したい。