0

からエイリアスが機能しないため、mod_rewrite を使用して、Apache にいくつかのエイリアスを使用したいと考えています.htaccess

たとえば、エイリアスarticle/?id=1about/

確かに、簡単なことでそれができます:

RewriteRule ^about\/$ "article\/\?id=1" [L]

ただし、同時に、誰もアクセスしたくないので、ページの値とジュースを保持するarticle/?id=1ために 301 リダイレクトを行います。about/(そうしないと、検索エンジンが 2 つの異なるページと認識し、独自の裁量で判断するためです。)

言い換えれば、この URL をそのエイリアスでのみ利用できるようにし、誰かが実際のページをリクエストした場合は、エイリアスに 301 リダイレクトします。

ここから問題が始まります。別の書き換えルールを作成すると、エラー 310 (リダイレクト ループ) が発生します。

RewriteRule ^article\/\?id=1$ "about\/" [L,R=301]

この問題を解決する方法はありますか...?

4

1 に答える 1

0

URI に対してではなく、実際の要求に対して照合する必要があります。これは、他のルールが単純に内部的に書き換えてリダイレクトをトリガーし、ループを引き起こすためです。また、 のクエリ文字列と照合することはできませんRewriteRule

RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD)\ /article/\?id=1&?([^\ ]*)
RewriteRule ^ /about/?%2 [L,R=301]
于 2012-10-10T04:55:33.820 に答える