链接到已经具有永久重定向的旧页面

时间:2014-12-11 03:39:18

标签: php .htaccess url

我在htaccess中有一个301重定向表单oldPage.php到newPage.php:

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

现在我想将forceOldPage.php重定向到oldPage.php(不会被重定向到newPage.php)

有可能吗?我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

如果引用者不是.htaccess,请先删除oldPage.php重定向,然后重定向到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();
}

?>

答案 1 :(得分:0)

一种可能性是假设&#34;强迫&#34; (选择任何字符串)将不会是任何转到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。但是,引用不会在重定向上传递到新页面(至少在我的环境中)。