2011-08-04 8 views
1

これはかなりシンプルだと思いましたが、古いテンプレートグループを新しいテンプレートグループに恒久的にリダイレクトする問題があります。Expression Engine 2 301古いテンプレートグループを新しいテンプレートにリダイレクト

www.domain.co.uk/weddingswww.domain.co.uk/more-weddingsに転送する必要があります。

どちらのテンプレートグループも存在しますが、古いテンプレートグループも削除する必要があるかどうかわかりません。または、テンプレート環境設定の他の設定? 、

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

は、私があまりにも働いている負荷より多くのリダイレクトを持って、この新しい1は、それらの上に配置する必要はありません。ここで

は、私が使用しようとしている何ですか?

+1

なぜあなたはドル記号でエスケープされた '\ $'を持っていますか?これはApacheに '/ weddings $'というURLを探すよう指示します。 '$'の前にバックスラッシュがないので、Apacheは '/ weddings'を正確に探します。 – LazyOne

答えて

3

あなたは、古いテンプレート(結婚式/インデックス)でPHPを有効にし、その中にこれを置くことができます:

<?php 
    header('HTTP/1.1 301 Moved Permanently'); 
    header('Location: http://www.domain.co.uk/more-weddings'); 
    exit(); 
?> 
+0

完璧な答え - 私の魅力のように働いた – Trent

0

mod_rewriteルールを記述する場合は、ルールは、彼らが表示される順序で適用されます。あなたのケースでは

、あなたはRedirectMatchにしたいと思いますが、あなたがremoving index.php from your ExpressionEngine URLsしている場合、これは特にそうです —他の書き換えルールの前に表示されます。あなたの例では

、あなただけの特定のディレクトリ(すなわち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

関連する問題