我在htaccess中有一个301重定向表单oldPage.php到newPage.php:
RedirectMatch 301 ^/oldPage.php$ /newPage.php
现在我想将forceOldPage.php重定向到oldPage.php(不会被重定向到newPage.php)
有可能吗?我怎么能这样做?
答案 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。但是,引用不会在重定向上传递到新页面(至少在我的环境中)。