我需要在nginx上重写大量的URL(大约250个)。
来自:http://xyzwiki.de/wiki/index.php?title=Article1
至:http://wiki.zyx.de/wiki/AlternativeNameForArcticle1
显然,来源确实使用了经典网址以及单个文章的其他名称,我有一张包含所有来源和目的地的表格。
我尝试使用基本的重定向示例但是我没有让它工作。我认为原因可能是源URL使用了URL参数 - 但我没有找到解决方案。
所以我需要一个映射,我告诉nginx一堆源URL及其各自的重写目标。
答案 0 :(得分:0)
就个人而言,我将使用auto_prepend_file工具在php中处理此问题。
有了这个,下面的代码块将在每个php调用运行,如果保存在服务器上的某个位置并且auto_prepend_file设置为加载它。
if ($_SERVER['SCRIPT_NAME'] == '/index.php') {
// only proceed if this is the root index.php file
$title = $_GET['title'];
$urlMap = array (
'article1' => 'alternative1',
'article2' => 'alternative2',
'article3' => 'alternative3',
...
'article250' => 'alternative250'
);
if (array_key_exists($title, $urlMap)) {
// redirect to alternative url
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://wiki.zyx.de/wiki/" . $urlMap[$title]);
exit;
} else {
// unset vars and continue otherwise
unset($title);
unset($urlMap);
}
}