我发现简化和管理外部推荐链接的通用方法.其实在很早之前,我就写过类似的代码, 原理很简单,但是并不通用,每次增加一个新的链接就得在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 就可以, 相当简洁.
强烈推荐
- 英国代购-畅购英伦
- TopCashBack 返现 (英国购物必备, 积少成多, 我2年来一共得了3000多英镑)
- Quidco 返现 (也是很不错的英国返现网站, 返现率高)
- 注册就送10美元, 免费使用2个月的 DigitalOcean 云主机(性价比超高, 每月只需5美元)
- 注册就送10美元, 免费使用4个月的 Vultr 云主机(性价比超高, 每月只需2.5美元)
- 注册就送10美元, 免费使用2个月的 阿里 云主机(性价比超高, 每月只需4.5美元)
- 注册就送20美元, 免费使用4个月的 Linode 云主机(性价比超高, 每月只需5美元) (折扣码: PodCastInit2022)
- PlusNet 英国光纤(超快, 超划算! 用户名 doctorlai)
- 刷了美国运通信用卡一年得到的积分 换了 485英镑
- 注册就送50英镑 – 英国最便宜最划算的电气提供商
- 能把比特币莱特币变现的银行卡! 不需要手续费就可以把虚拟货币法币兑换
微信公众号: 小赖子的英国生活和资讯 JustYYUK