小赖子的英国生活和资讯

VPS上所有网站都用上外部推荐链接管理

阅读 桌面完整版

我发现简化和管理外部推荐链接的通用方法.其实在很早之前,我就写过类似的代码, 原理很简单,但是并不通用,每次增加一个新的链接就得在PHP里面代码.原理代码是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
  $pageurl=$QS->getVar('rid');
  $found=false;
  
  if ($pageurl=='MyPrograms')
  {
    $QS->setVar('do', 'Life.Record');
    $QS->setVar('rid', 'programs');
    $found=true;
  }
  else
  if ($pageurl=='Interview.Facebook')
  {
    $QS->setVar('do', 'Life.Record');
    $QS->setVar('rid', 'diary/2010/2010-04/2010-04-03_19.26PM.html');
    $found=true;
  }
  else
  if ($pageurl=='Links')
  {
    $QS->setVar('do', 'Life.Record');
    $QS->setVar('rid', 'links.php');
    $found=true;
  }
 
  if ($found)
  {
    header("HTTP/1.1 301 Moved Permanently"); 
    header('Location: https://steakovercooked.com/'.$QS->toQs2());
  }
  else
  {
    die('Invalid Redirect. '.$pageurl);  
  }
  $pageurl=$QS->getVar('rid');
  $found=false;
  
  if ($pageurl=='MyPrograms')
  {
    $QS->setVar('do', 'Life.Record');
    $QS->setVar('rid', 'programs');
    $found=true;
  }
  else
  if ($pageurl=='Interview.Facebook')
  {
    $QS->setVar('do', 'Life.Record');
    $QS->setVar('rid', 'diary/2010/2010-04/2010-04-03_19.26PM.html');
    $found=true;
  }
  else
  if ($pageurl=='Links')
  {
    $QS->setVar('do', 'Life.Record');
    $QS->setVar('rid', 'links.php');
    $found=true;
  }

  if ($found)
  {
    header("HTTP/1.1 301 Moved Permanently"); 
    header('Location: https://steakovercooked.com/'.$QS->toQs2());
  }
  else
  {
    die('Invalid Redirect. '.$pageurl);  
  }

比如这个例子 (2010年面试 Facebook). 这个不太好用,没有直接在 txt 里每行放一个链接来得实用.

建立一个 /out 目录并设置相应的权限 (例如 644) 然后只需要把这里的三个文件 (.htaccess, index.php, redirects.txt) 放到该目录下,并确认 redirects.txt 能被PHP读.

原理就是在访问 /out/example 的时候, .htaccess 重定向会变成 /out/index.php?id=example 然后 index.php 在执行的时候会去读 redirects.txt 文件(可更改路径或者文件名),将 redirects.txt (CSV 格式,按逗号隔开缩写和长的URL)里读到数组中. 如果有类似 example,URL 这一行,就会再 302重定向到该URL. 这样的好处是统一管理,并且不用担心 外部链接每次都要加上 nofollow 避免影响到SEO分数. 而且如果外部链接更改或者失效也不用每个地方都改(只需要改 redirects.txt 里对应的记录)

我的VPS上 现在一共放有 6 个网站, 我总不能每个网站都独立的一份 redirects.txt 这样也不好维护,于时我就把 redirects.txt 移动到非 public 的目录,例如 /var/www 下, 这样一来, 这个文件更不可能在浏览器里被直接访问了, 但是其它每个网站的目录下都需要拷贝 index.php 和 .htaccess 文件,只是 在index.php 里把读文件的 redirects.txt 改成:

1
$f = fopen( '/var/www/redirects.txt', 'r' );
$f = fopen( '/var/www/redirects.txt', 'r' );

然后, 在替换以前的URL的时候, 可以不写 domain, 比如只写 /out/quickhost , 替换 WordPress 文中的URL的SQL:

UPDATE wp_posts SET post_content = REPLACE (post_content, 'https://www.quickhostuk.com/aff.php?aff=121', '/out/quickhost');

每个 WordPress 博客都这样替换, 不管你在哪个网站上, 都只需要引用 /out/quickhost 就可以, 相当简洁.

强烈推荐

微信公众号: 小赖子的英国生活和资讯 JustYYUK

阅读 桌面完整版
Exit mobile version