リダイレクトルールのHTTP条件を設定する

リダイレクトルールのHTTP条件を設定する

私のリダイレクトルールには.htaccessエージェントを転送するA.htmlB.html次のパターンを使用します。

Redirect 301 /A.html http://mysite.com/B.html

Redirectディレクティブではターゲット ホストを設定する必要があるため、このルールを特定のホストにのみ適用することは可能ですか? テスト ドメインとデプロイ ドメインの両方があり、デプロイ ドメインにのみ適用したいと考えています。Rewriteルールに HTTP 条件を設定できますが、HTTP の場合はどのように設定すればよいでしょうかRedirect?

答え1

純粋なディレクティブでは実行できないという解決策にたどり着きましたRedirect。特定の HTTP 条件で訪問者をリダイレクトする必要がある場合は、Rewriteルールを使用する必要があります。

答え2

実際にこれを行うことは可能ですが、301 リダイレクト コードは失われます。

SetEnvIfNoCase Host "myotherdomain.com" redirectthisdomain

<Files "A.html">
   Order Deny,Allow
   Deny from env=redirectthisdomain

   ErrorDocument 403 http://mysite.com/B.html
</Files>

答え3

デプロイ ドメインの vhost 構成にリダイレクト ルールを追加するだけです。この方法では、このホストに対してのみアクティブになります。

答え4

簡単な例を挙げると、訪問者が dev.example.com/A.html にアクセスすると、B.html にリダイレクトされます。www.example.com/A.html にアクセスすると、C.html にリダイレクトされます。どちらも 301 リダイレクトです。

RewriteEngine on
RewriteCond %(HTTP_HOST) ^dev.example.com$ [NC]
RewriteCond %(REQUEST_URI) ^/A.html
RewriteRule ^(.*)$ http://dev.exmaple.com/B.html [R=301]

RewriteCond %(HTTP_HOST) !^dev.example.com$ [NC]
RewriteCond %(REQUEST_URI) ^/A.html
RewriteRule ^(.*)$ http://dev.exmaple.com/C.html [R=301]

詳細については、ApacheのMod_RewriteWebサイト。

関連情報