我有一个包含大约1500多页的静态网站。这些HTML页面中的每一个都有一个内部链接(我的意思是在页面本身上编码),我想用一个新链接替换它。
但是,不可能编辑所有这些页面,因为有数千页。
以下是一个例子:
www.example.com/page.html
www.abc.com
www.xyz.com
而不是www.abc.com
我已经拥有一个MySQL表,其中包含所有当前链接和两列中的新链接。
有没有办法使用.htaccess
文件,PHP和MySQL重定向所有这些链接?如果有可能那么代码是什么样的?
答案 0 :(得分:1)
我找到了一种使用此脚本更改所有链接的方法。
<?php
require_once("connection.inc.php");
function get_value($file){
//$html = file_get_contents($file,true);
$dom = new DOMDocument('1.0');
$dom->loadHTMLFile($file);
$xpath = new DOMXPath($dom);
$nodes = $xpath->query('//a/@href');
foreach($nodes as $href) {
return $href->nodeValue; // echo current attribute value
//$href->nodeValue = 'new value'; // set new attribute value
//$href->parentNode->removeAttribute('href'); // remove attribute
}
}
function put_value($file,$pattern){
//$html = file_get_contents($file,true);
$dom = new DOMDocument('1.0');
$dom->loadHTMLFile($file);
$xpath = new DOMXPath($dom);
$nodes = $xpath->query('//a');
$nodes->item(0)->setAttribute("href",$pattern);
$dom->save($file);
}
$dir = new RecursiveDirectoryIterator(__DIR__);
$flat = new RecursiveIteratorIterator($dir);
$files = new RegexIterator($flat, '/\.html$/i');
foreach($files as $file) {
$value=get_value($file);
$query=mysql_query("SELECT new_links FROM site WHERE current_links='$value'");
if(mysql_num_rows($query)==1){
$value_orginal = mysql_result($query,0);
put_value($file,$value_orginal);
echo "The ".$file." has changed to ".$value."</br>";
}
else{
die("die baby die :)");
}
}
?>
答案 1 :(得分:0)
您可以使用htaccess重定向 Redirect to a Different URL using .htaccess