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を適切に設定してください。
出典
2011-08-04 14:43:40
rjb
なぜあなたはドル記号でエスケープされた '\ $'を持っていますか?これはApacheに '/ weddings $'というURLを探すよう指示します。 '$'の前にバックスラッシュがないので、Apacheは '/ weddings'を正確に探します。 – LazyOne