2017-01-08 9 views
0

ドメインを移行しています。.htaccess 301特定のURLをフォールバックでリダイレクトする

私はそれらを特定のページにリダイレクトする必要があるいくつかのURLを持っていますが、それ以外のものはブランケットのフォールバックになる可能性があります。私もクエリ文字列を維持する必要があります。

例:

マニュアルのURL:

http://example.com/i-am-manual-redirect => https://example2.com/this-is-not-the-same-URL 
http://example.com/i-am-manual-redirect2 => https://example2.com/somewhere-else 

そして、他のすべてのフォールバック:

http://example.com/same => https://example2.com/same 
http://example.com/blah => https://example2.com/blah 

が現在持っている:

# Manual Redirects 
RedirectMatch 301 ^/i-am-manual-redirect https://example2.com/this-is-not-the-same-URL 
RedirectMatch 301 ^/i-am-manual-redirect2 https://example2.com/somewhere-else 

# Fallback 
RewriteCond %{HTTP_HOST} ^example.com [NC] 
RewriteRule ^(.*)$ http://www.example2.com/$1 [L,R=301,NC] 

しかし、私は、フォールバックを追加いつでも、手動のリダイレクトは機能しません。

+0

フォールバックを先に入れてみましたか?ファイルは上から下に読み込まれるので、フォールバックは手動リダイレクトの後にあるため優先されます。私は間違っている可能性があり、現時点でそれをテストすることはできませんが、それはショットの価値があります。 – stereoscience

答えて

1

RewriteRuleが手動のものを処理しないようにするか、mod_rewriteですべて処理する必要があります。 Mod_rewriteが最初に処理されると私は思う。または、mod_rewriteを使用するようにallを変更します。ここではあなたが持っているものへの更新だ://とあなたのフォールバックでhttp:

# Manual Redirects 
Redirect 301 /i-am-manual-redirect https://example2.com/this-is-not-the-same-URL 
Redirect 301 /i-am-manual-redirect2 https://example2.com/somewhere-else 

# Fallback 
RewriteCond %{REQUEST_URI} !=/i-am-manual-redirect 
RewriteCond %{REQUEST_URI} !=/i-am-manual-redirect-2 
RewriteCond %{HTTP_HOST} ^example.com [NC] 
RewriteRule ^(.*)$ http://www.example2.com/$1 [L,R=301] 

あなたはあなたの最初の二つはhttpsに行くことを知っています//?チェックしてるだけ。

正規表現には文字が指定されていないため、ルールにNCは必要ありませんでした。

クエリ文字列が一致しないため、完全なURLを指定しているため、RedirectMatchを使用する必要はありません。どちらの場合も、ここではあなたが望むように通過したばかりです。

+0

ありがとうございました – envysea

関連する問題