2014-12-11 2 views
3

У меня есть форма 301 редирект oldPage.php к newPage.php в HTAccess:Ссылка на старую страницу, которая уже имеет постоянный редирект

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

Теперь я хотел бы forceOldPage.php быть перенаправлены на oldPage.php (без перенаправления на newPage.php)

Возможно ли это? Как я могу это сделать?

ответ

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(); 
} 

?> 
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 

FYI: Я попытался с помощью HTTP_REFERER как способ обнаружить, если пользователь пришел из forceOldPage. Однако референт не передается на новую страницу при перенаправлении (по крайней мере, в моей среде).

Смежные вопросы