2011-01-07 2 views
4

ドメインへのすべての要求を特定のユーザーエージェントからサブドメインにリダイレクトしようとしています。次のように私のルールは次のとおりです。mod_rewriteを使用したユーザーエージェントの書き換え規則

RewriteEngine on 
RewriteCond %{HTTP_USER_AGENT} ^Test Agent/(.*)$ // <-- Line 4 
RewriteRule ^(.*)$   https://test.domain.com/$1   [L,302] 

をしかし、Webサーバの起動時に私が得るすべては次のとおりです。

Syntax error on line 4 of /var/www/misafe/internal/misafe-old.conf: 
RewriteCond: bad flag delimiters 

それは私にはOKに見えますが、私は明らかに何かが欠けていると、エラーが多くを支援していません。何か案は?

おかげで、 J

答えて

12

は2つのバグがある

RewriteCond %{HTTP_USER_AGENT} ^Test Agent/(.*)$ 

あなたがエスケープする必要がありますスペースとforwaあなたの正規表現パターンではスラッシュを使用します。第二に

RewriteCond %{HTTP_USER_AGENT} ^Test\ Agent\/(.*)$ 

RewriteRule ^(.*)$   https://test.domain.com/$1   [L,302] 

302は、リダイレクトHTTPステータスコードですが、あなたがリダイレクトされるように指定しませんでした。

RewriteRule ^(.*)$   https://test.domain.com/$1   [L,R=302] 
+0

パーフェクト、それはまさにそれでした!私はどのくらい試しても、正規表現を得ることは決してできないようです。とにかく、ルールは完全に今働いています。ありがとう。 – JWood

+0

明確にするために、問題は正規表現をエスケープするのではなく、設定ファイルの構文をエスケープすることでした。スペースはエスケープすることなく完全にうまく表現されますが、スペースがある(またはスペースがある)場合は、設定ファイルで引用符を使用する必要があります。 – AndrewF

1

ライン:RewriteRule ^(.*)$ https://test.domain.com/ $1 [L,302]

が可能shuld:

まず:RewriteRule ^(.*)$ https://test.domain.com/ $1 [R=302]

+0

私は正規表現を正しくエスケープしていなかったという事実は、別の問題であったことは間違いなく問題の一部でした。 – JWood

関連する問題