Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP如何更改URL_Php_Url Rewriting_Parse Url - Fatal编程技术网

PHP如何更改URL

PHP如何更改URL,php,url-rewriting,parse-url,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>

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


<?php str_replace( 'http://oldsite.com/', 'http://newsite.com/', $content );?>
str_replace需要3个参数。第一个是你想要改变的(针),第二个是你想要改变的,第三个是你正在寻找的(干草堆)

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

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


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

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

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

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

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

这将更改所有以
http://oldsite.com
http://newsite.com

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

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

这将更改所有以
http://oldsite.com
http://newsite.com

PHP可以在HTML输出中用另一个字符串替换字符串,是的,但这并不意味着这是一个好主意。表面上看,这似乎完全达到了您想要的效果,但会以微妙的方式中断(在搜索引擎蜘蛛抓取网站的情况下),这会中断希望URL保持不变的现有客户端

不要试图用PHP比HTTP更聪明,只要使用HTTP就可以了。如果您有权访问
oldsite.com
的服务器,并且该服务器的所有链接都必须重定向到位于
newsite.com
的新服务器的相同URL路径,则使用您的web服务器以
HTTP/1.0 301永久移动的
响应和
位置通知客户端:http://newsite.com/foo-bar-baz
标题


这将通知您网站的所有HTTP客户端可以在新地址找到旧内容,并通知客户端更新其书签并使其缓存位置和其他存储信息无效
mod_rewrite
使这在Apache中变得非常简单,但如果您必须使用PHP,那么作为最后手段,请使用它的
header()
函数发送与
mod_rewrite
相同的HTTP头。

PHP可以在HTML输出中用另一个字符串替换字符串,是的,但这并不意味着这是个好主意。表面上看,这似乎完全达到了您想要的效果,但会以微妙的方式中断(在搜索引擎蜘蛛抓取网站的情况下),这会中断希望URL保持不变的现有客户端

不要试图用PHP比HTTP更聪明,只要使用HTTP就可以了。如果您有权访问
oldsite.com
的服务器,并且该服务器的所有链接都必须重定向到位于
newsite.com
的新服务器的相同URL路径,则使用您的web服务器以
HTTP/1.0 301永久移动的
响应和
位置通知客户端:http://newsite.com/foo-bar-baz
标题


这将通知您网站的所有HTTP客户端可以在新地址找到旧内容,并通知客户端更新其书签并使其缓存位置和其他存储信息无效
mod_rewrite
使这在Apache中变得非常简单,但如果您必须使用PHP,那么作为最后手段,请使用它的
header()
函数发送与
mod_rewrite
相同的HTTP头。

我不理解这个问题。
str\u replace( 'http://oldsite.com/', 'http://newsite.com/',$content)
您可以创建一个变量并在需要时更改该变量。$URL='';然后echo'';这是您的意思还是我完全误解了?我想他指的是用PHP重写URL,而不是实际替换HTML代码。首先查看创建动态URL的代码会有所帮助……如果您尝试使用的是PHPnipulate给我们一个提示,告诉我们你在使用什么,而不是最终的html。我不理解这个问题。
stru'http://oldsite.com/', 'http://newsite.com/',$content)
您可以创建一个变量并在需要时更改该变量。$URL='';然后echo'';这是您的意思还是我完全误解了?我想他指的是用PHP重写URL,而不是实际替换HTML代码。首先查看创建动态URL的代码会有所帮助……如果您尝试使用的是PHPnipulate给我们一个提示,告诉我们你正在使用什么,而不是最终的html.hm,它似乎不太管用。我更新了描述以添加更多信息,如果帮助看起来不管用的话。我更新了描述以添加更多信息,如果有帮助的话