0

次のファイルがあります。

/forums/faq.php-- http://www.domain.com/forums/faq.php

このファイルへの呼び出し (通常は faq.php?faq=faqname の形式で行われます) を次のように書き換えたいと思います。

/faq/faqname-- http://www.domain.com/faq/faqnameで

次の .htaccess ルールを試してみましたが、役に立ちませんでした。私のルート .htaccess:

RewriteRule ^forums/faq.php?faq=(.*)$ faq/$1 [L,R=301]
RewriteRule ^faq$ faq/ [L,QSA,R=301]

/forums/.htaccess:

RewriteRule ^faq.php?faq=(.*)$ http://www.domain.com/faq/$1 [L,R=301]

ここで本当に明白なことを見落としているでしょうか?私の構文はオフですか?

4

1 に答える 1

0
  1. htaccessのルールを捨てることができ/forums/ます。そこにあるルールは、ドキュメント ルートのルールよりも優先されます。両方の場所でそれらは必要ありません。

  2. ルールが意図したとおりに動作すると、リダイレクト ループが発生します。

のクエリ文字列と照合することはできないRewriteRuleため、最初のルールは何にも一致しません。本当にやりたいことは、実際のリクエストと照合することです。

# redirect /forums/faq.php?faq=faqname to /faq/faqname
RewriteCond %{THE_REQUEST} \ /forums/faq\.php\?faq=([^&\ ]+)
RewriteRule ^forums/faq.php$ /faq/%1? [L,R=301]

次に、内部的に元に戻す必要があります

RewriteRule ^faq/(.+)$ /forums/faq.php?faq=$1 [L,QSA]
于 2012-12-28T01:31:29.793 に答える