PHP如何更改URL

时间:2012-01-14 19:47:28

标签: php url-rewriting parse-url

我正在尝试使用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标题链接只是将用户发送到新网站主页。

3 个答案:

答案 0 :(得分:3)

PHP可以用HTML输出中的另一个字符串替换字符串,是的,但这并不意味着它是个好主意。这似乎可以实现你想要的表面,但是以微妙的方式打破(在搜索引擎蜘蛛爬行的网站的情况下)它将破坏希望URL保持相同位置的现有客户端。

不要试图用PHP来超越HTTP,而是使用HTTP来发挥优势。如果您有权访问oldsite.com服务器,并且必须将所有链接重定向到newsite.com处相同URL路径的新服务器,则使用您的Web服务器通知HTTP/1.0 301 Permanently Moved客户端Location: http://newsite.com/foo-bar-baz 1}}响应和mod_rewrite标题。

这将通知您网站的所有 HTTP客户端,可以在新地址找到旧内容,并通知客户更新其书签并使其缓存位置和其他存储信息无效。 header()在Apache中使这绝对是微不足道的,但是如果你绝对必须使用PHP,那么作为最后的手段使用它的mod_rewrite函数来发送{{1}}的相同HTTP头会。

答案 1 :(得分:0)

<?php str_replace( 'http://oldsite.com/', 'http://newsite.com/', $content );?>

str_replace需要3个参数。第一个是你想要改变的东西(针),第二个是你想要改变的东西,第三个是你正在寻找的东西(干草堆)。

您还可以使用内联三元运算符:

<?php($link==$old_link)? 'http://newsite.com/': 'http://oldsite.com/';?>

答案 2 :(得分:0)

您可以使用正则表达式执行此操作:

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

这会将以http://oldsite.com开头的所有网址更改为http://newsite.com