如果您负责这两个 URL 并使用 Apache,您可以使用以下方式处理旧 Apache 服务器中的旧地址.htaccess
:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^news.oxo.com$
RewriteRule ^site/data/html_dir/[0-9]{4}/[0-9]{2}/[0-9]{2}/([0-9]+)\.html$ http://m.oxo.com/article.html?contid=$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^(www\.)?salute.com$
RewriteRule ^[^/]+/[^/]+/[^/]+/([0-9]+)\.html$ http://m.salute.com/article.html?contid=$1 [R=301,L]
如果您不负责并且只想在 PHP 中重写 URL(例如,如果您要更改数据库中的链接),您可以这样做:
<?php
$original_URLs[0] = "news.oxo.com/site/data/html_dir/2013/05/25/2013052500007.html";
$original_URLs[1] = "salute.com/arti/society/health/588947.html";
//patterns for m.oxo
$replacements[0] = 'm.oxo.com/article.html?contid=$1';
$patterns[0] = "!news.oxo.com/site/data/html_dir/[0-9]{4}/[0-9]{2}/[0-9]{2}/([0-9]+)\.html$!";
//patterns for m.salute
$replacements[1] = 'm.salute.com/article.html?contid=$1';
$patterns[1] = '!salute\.com/[^/]+/[^/]+/[^/]+/([0-9]+)\.html$!';
foreach($original_URLs as $key=>$url){
echo "<pre>".preg_replace($patterns,$replacements,$url)."</pre>";
}
?>
如果您尝试替换嵌入在文章之类的内容中的链接,也可以用字符串替换替换 foreach。
echo "preg_replace($patterns,$replacements,$some_article);