2017-01-05 9 views
1

広すぎる現在Apacheのリダイレクト文を絞り込み -は、私は現在、これらの二つの文をリダイレクトしてい

RedirectMatch permanent "/(.*)\.html$" "https://www.example.com/archive/blog/$1" 
RedirectMatch permanent "/(.*)" "https://www.example.com/archive/blog" 

RedirectMatch permanent "/(.*)\.html$" "https://www.example.com/es/archivo/blog/$1" 
RedirectMatch permanent "/(.*)" "https://www.example.com/es/archivo/blog" 

誰かがスペイン語のページにあるときに、私は起こるがしたいどのような、彼らはにリダイレクトされますされますスペイン語www.example.comページ。これは、ここでのルールの2番目のセットに対応します。

現在、スペイン語URLと英語URLの両方が最初のリダイレクトルールで一致しているのは、両方とも.htmlの末尾があるため、常に最初のルールのみにリダイレクトされるということです。

URLの違いが収まるように、これら2つのリダイレクトステートメントを設定するにはどうすればよいですか?

例として - これらのルールでは、-http://www.oldsite.com/2016/11/article.htmlに行くと、私は正しい最初のルールにリダイレクトされます。

URLをhttp://www.oldsite-es.com/2016/11/article.htmlにすると、最初のルールにもリダイレクトされます。これはes(スペイン語)ページなので正しくありません。

EDIT - どのように私はこれらのURLのホストの両方で動作するようにリダイレクト規則を変更することができ

<If "%{HTTP_HOST} = '^oldsite-es\.com$'"> 
    RedirectMatch permanent "/(.*)\.html$" "https://www.example.com/es/archivo/blog/$1" 
    RedirectMatch permanent "/(.*)" "https://www.example.com/es/archivo/blog" 
</If> 

- ?

これは私がイマイチかなりの作業を試してみましたつの新しいリダイレクト文ですか

+0

これは古いURLから新しいURLにリダイレクトしようとしているものですか? –

+0

ええと、www.oldsite.com/...../olddocument.htmlからwww.example.com/..../newdocument.html、www.oldsite-es.com/.../olddocument.html www.example-es.com/.../newdocument.htmlに移動します。基本的には、現在のステートメントはあまりにも貪欲で、2つの異なるhsot URL間を区別しません。 –

答えて

1

あなたのコメントに基づいて、Mod_aliasの代わりにmod_rewriteを使用する必要があります。そのため、ホスト名に基づいて一致させることができ、一致するクリエイティブに1つのルールを持たせることができます。

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(?:www\.)?oldsite(-es)?\.com [NC] 
RewriteRule^http://www.example%1.com%{REQUEST_URI} [R=301,L] 
+0

'{REQUEST_URI}'セクションは、後続のURL /の後ろのものと新しいサイトとの一致を許可しますか? EX - oldsite.com/somestuff/documentから新しいURLをwww.example.com/somestuff/documentに変更しますか? –

+0

はい、それは何ですか? –

+1

うまくいきました。本当にありがとう! –

関連する問題