2017-10-10 15 views
2

すべてのURLをwww.example.com/forumsからwww.example.com/blog/にリダイレクトしています。URLをフォルダリダイレクトから除外する

ので、私は.htaccessにこのルールを作った:

RewriteRule ^forums blog/$1 [L,R=301] 

事は私もforums/で始まり、/blog以外の特定のURLにリダイレクトいくつかのURLを除外したいということです。

たとえば、forums/8/some-made-up-word-here-1681~/studies/some-made-up-studiesです。

は今のところ、それはあなただけで、より一般的なルールの前に、最初のより具体的なリダイレクトを含める必要がforum/

答えて

1

で始まるすべてのURLのような/blogにリダイレクトします。たとえば:

RewriteEngine On 

# Specific redirects 
RewriteRule ^forums/8/some-made-up-word-here-1681 /studies/some-made-up-studies [R,L] 

# Redirect all other URLs that start /forums 
RewriteRule ^forums/?(.*) /blog/$1 [R,L] 

私は私はあなたが置換$1後方参照を使用していたが、持っていなかったので、おそらく、本来の意図だったと仮定した、/blog/<something>/forums/<something>をリダイレクトするために、既存のディレクティブをも変更しましたRewriteRuleのキャプチャグループパターンです。元の指令は/forums/<something>から/blog/にリダイレクトされていました。

にスラッシュ接頭辞を追加しました。です。リダイレクトにはこれが必要ですが、代わりにRewriteBaseと設定している場合がありますが、そうしない場合もあります。

以前のキャッチオール301はブラウザによってハードにキャッシュされているため、テストする前にブラウザのキャッシュをクリアする必要があります。このため、キャッシングの問題を避けるために、一時的な302でテストするほうが簡単です。上記の一時リダイレクトを、意図したとおりに動作していることを確認した後に限り、301に変更します。

UPDATE:は、URLの残りの部分をコピーせずに、/forums/blog/に開始するすべてのURLをリダイレクトするには、その後、読むために、最後のディレクティブを変更:基本的に

# Redirect all other URLs that start /forums 
RewriteRule ^forums /blog/ [R,L] 

$1を元の指示にありました余分な。

+0

あなたのコードを試してみる前に、フォワードスラッシュのないリダイレクト/フォーラムを/blog/...not/フォーラム/とそれに従います。 – Ron

+0

はい、OKです。 forums /?(.*) 'は'/forums'にもマッチします。 '? 'は、先行するスラッシュをオプションにします。 – MrWhite

+0

申し訳ありませんが、フォーラムに続く/リダイレクトするURLは、私が言及したものを除き、/ブログ/のみ(末尾にはありません)が必要です。今すぐあなたのコードで、/フォローしているものは、/ blog/same-following-content/ – Ron

関連する問題