2014-12-11 140 views
3

我有一个301重定向形式oldPage.php到newPage.php htaccess的:链接到旧的一页已经有永久重定向

RedirectMatch 301 ^/oldPage.php$ /newPage.php 

现在我想forceOldPage.php重定向到oldPage.php(没有被重定向到newPage.php)

可能吗?我怎样才能做到这一点?

回答

2

首先删除您的.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(); 
} 

?> 
0

一种可能性是假设“强制”(选择任何字符串)将不会成为去往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不会传递到重定向的新页面(至少在我的环境中)。