Expression Engine 2 301 перенаправляет старую группу шаблонов в новую - PullRequest
1 голос
/ 04 августа 2011

Я подумал, что это будет довольно просто, однако у меня возникают проблемы с постоянным перенаправлением старой группы шаблонов на новую.

У меня есть www.domain.co.uk/weddings, который должен быть направлен на www.domain.co.uk/more-weddings.

Обе группы шаблонов существуют, не уверены, нужно ли мне тоже удалить старую? Или какие-то другие настройки в настройках шаблона?

Вот что я пытался использовать:

RedirectMatch 301 ^/weddings\$ http://www.domain.co.uk/more-weddings

У меня загружено больше перенаправлений, которые тоже работают, нужно ли размещать этот новый над ними?

Ответы [ 2 ]

3 голосов
/ 04 августа 2011

Вы можете включить PHP в старом шаблоне (weddings / index) и поместить его в него:

<?php
    header('HTTP/1.1 301 Moved Permanently');
    header('Location: http://www.domain.co.uk/more-weddings');
    exit();
?>
0 голосов
/ 04 августа 2011

При написании mod_rewrite правил правила применяются в том порядке, в котором они появляются.

В вашем случае вы бы хотели, чтобы ваши RedirectMatch до появлялись перед любыми другими правилами перезаписи - это особенно верно, если вы удаляете index.php из ваших URL-адресов ExpressionEngine .

В вашем примере, если вы хотите перенаправить определенный каталог (т. е. группа шаблонов ExpressionEngine), следующее правило будет действовать, позволяя остальной части сайта нормально функционировать:

<IfModule mod_rewrite.c>
    RewriteEngine On

    # Redirect Only Matching Directories
    RewriteCond %{REQUEST_URI} ^/(weddings|weddings/.*)$
    RewriteRule ^(.*)$ http://www.domain.co.uk/more-weddings/$1 [R=301,L]
</IfModule>

Убедитесь, что это правило отображается до ваше удаление index.php (пример ниже):

<IfModule mod_rewrite.c>
    RewriteEngine On

    # Redirect Only Matching Directories
    RewriteCond %{REQUEST_URI} ^/(weddings|weddings/.*)$
    RewriteRule ^(.*)$ http://www.domain.co.uk/more-weddings/$1 [R=301,L]

    # Removes ExpressionEngine index.php from URLs
    RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

Если вы хотите, чтобы Google и другие сканеры видели ваш контент как временно перемещенный (код ответа 302, по умолчанию) или перемещенный навсегда (301), обязательно настройте RewriteRule Flags соответствующим образом.

Apache mod_rewrite Cheat Sheet

...