2016-05-01 18 views
0

単純な.htaccessリダイレクトを実装しようとしています これらの作業のどれも、どのように修正するのですか?単純なhtaccess RewriteRuleまたはリダイレクトが正しく動作しない

RewriteRule ^/en/?productsublayout=products_horizon http://www.example.com/en/ [R=302,L] 

Redirect 301 /en/?productsublayout=products_horizon http://www.example.com/en/ 
+0

これを試す:http://serverfault.com/questions/773999/htaccess-301-redirect-does-not-work – starkeen

答えて

1

読むthe documentation of mod_rewrite、あなたのコードは、2つの一般的な問題、すでにdocumenationで対処されているの両方を持っているよう。

はディレクトリ毎の書き換え

[..]

  • 削除プレフィックスは常にマッチングが先頭のスラッシュを持ったことがない文字列に対して発生した意味、スラッシュで終わります。したがって、^/のパターンは、ディレクトリごとのコンテキストで決して一致しません。

あなたは、ホスト名、ポート、またはクエリ文字列にマッチそれぞれ%{HTTP_HOST}%{SERVER_PORT}、または%{QUERY_STRING}変数とのRewriteCondを使用したい場合

これ以外にも、RewriteRuleの最初の引数は正規表現です。 ?文字は、正規表現では特別な意味を持ちます。あなたはこのようにそれを修正する必要が


:また

RewriteCond %{QUERY_STRING} ^productsublayout=products_horizon$ 
RewriteRule ^en/$ /en/? [R=302,L] 

は、あなたは、Apacheの最新バージョンを持っている場合は、書き換え部分の後ろの末尾?の代わりにQSDフラグを使用します。

関連する問題