我有一个301重定向形式oldPage.php到newPage.php htaccess的:链接到旧的一页已经有永久重定向
RedirectMatch 301 ^/oldPage.php$ /newPage.php
现在我想forceOldPage.php重定向到oldPage.php(没有被重定向到newPage.php)
可能吗?我怎样才能做到这一点?
我有一个301重定向形式oldPage.php到newPage.php htaccess的:链接到旧的一页已经有永久重定向
RedirectMatch 301 ^/oldPage.php$ /newPage.php
现在我想forceOldPage.php重定向到oldPage.php(没有被重定向到newPage.php)
可能吗?我怎样才能做到这一点?
首先删除您的.htaccess
重定向,而改为oldPage.php
如果referer不是forceOldPage.php
。
像这样在oldPage.php
的顶部是一个很好的开始,根据需要进行调整和改进。
<?php
// If the referring page isn't "forceOldPage.php"...
if (!strpos($_SERVER['HTTP_REFERER'], 'forceOldPage.php')) {
// ...301 redirect to "newPage.php"
header("HTTP/1.1 301 Moved Permanently");
header("Location: /newPage.php");
die();
}
?>
一种可能性是假设“强制”(选择任何字符串)将不会成为去往oldPage.php的任何页面的查询字符串的一部分。使用RewriteCond和RewriteRule。然后将forceOldPage.php重定向到oldPage.php?force。
RewriteEngine on
RewriteCond %{QUERY_STRING} !force
RewriteRule oldPage.php newPage.php [R=301]
RedirectMatch 301 ^/forceOldPage.php$ /oldPage.php?force
仅供参考:我尝试使用HTTP_REFERER作为检测用户是否来自forceOldPage的方法。但是,referer不会传递到重定向的新页面(至少在我的环境中)。