0

PHP を使用して、div 内のすべての動的 URL を別の静的 URL に変更しようとしています。

たとえば、私は持っています:

<div class="mydiv">
  <a href="http://oldsite.com/123">Title 123</a>
  <a href="http://oldsite.com/321">Title 321</a>
  <a href="http://oldsite.com/abc">Title abc</a>
  <a href="http://oldsite.com/cba">Title cba</a>
</div>

そして、それらすべてを次のように変更したい:

<div class="mydiv">
  <a href="http://newsite.com">Title 123</a>
  <a href="http://newsite.com">Title 321</a>
  <a href="http://newsite.com">Title abc</a>
  <a href="http://newsite.com">Title cba</a>
</div>

htaccess でこれを行うことができることは理解していますが、可能であれば PHP で行うことをお勧めします。何か案は?

編集: oldsite.com リンクは RSS フィードから生成され、ページに埋め込まれています。すべての RSS タイトル リンクで、ユーザーが新しいサイトのホームページに移動するようにします。

4

3 に答える 3

3

PHP は、HTML 出力内の文字列を別の文字列に置き換えることができます。これは、表面的にはまさにあなたが望むものを達成しているように見えますが、微妙な方法で壊れており (検索エンジン スパイダーによってクロールされた Web サイトの場合)、URL が同じ場所に留まることを期待している既存のクライアントを壊してしまいます.

PHP で HTTP の裏をかこうとする代わりに、HTTP を有利に使用してください。のサーバーにアクセスでき、そのoldsite.comすべてのリンクを同じ URL パスの新しいサーバーにリダイレクトする必要がある場合は、Web サーバーを使用してクライアントに応答とヘッダーnewsite.comを通知します。HTTP/1.0 301 Permanently MovedLocation: http://newsite.com/foo-bar-baz

これにより、Web サイトのすべての HTTP クライアントに、古いコンテンツが新しいアドレスで見つかることが通知され、クライアントにブックマークを更新し、キャッシュされた場所やその他の保存された情報を無効にするように通知されます。mod_rewriteこれは Apache では非常に簡単ですが、どうしても PHP を使用する必要がある場合は、最後の手段としてその関数を使用してheader()、同じ HTTP ヘッダーを送信しますmod_rewrite

于 2012-01-14T22:19:24.623 に答える
0
<?php str_replace( 'http://oldsite.com/', 'http://newsite.com/', $content );?>

str_replace は 3 つのパラメーターを取ります。1 つ目は変更したいもの (針)、2 つ目は変更したいもの、3 つ目は探しているもの (干し草の山) です。

インライン三項演算子を使用することもできます。

<?php($link==$old_link)? 'http://newsite.com/': 'http://oldsite.com/';?>
于 2012-01-14T19:56:45.467 に答える
0

正規表現を使用してそれを行うことができます:

$content = preg_replace("|http://oldsite.com(/([^'"]*)?)?|msi", "http://newsite.com", $content);

これにより、 で始まるすべての URL が に変更さhttp://oldsite.comhttp://newsite.comます。

于 2012-01-14T22:03:25.320 に答える