使用mod_rewrite重写用户代理的规则

JWo*_*ood 7 apache mod-rewrite http

我正在尝试将所有请求重定向到域,从特定用户代理到子域.我的规则如下:

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

但是我在启动Web服务器时得到的是:

Syntax error on line 4 of /var/www/misafe/internal/misafe-old.conf:
RewriteCond: bad flag delimiters
Run Code Online (Sandbox Code Playgroud)

对我来说看起来不错,但我显然错过了一些东西而且错误并没有多大帮助.有任何想法吗?

谢谢,J

Jon*_*end 18

有2个错误:

第一:

RewriteCond %{HTTP_USER_AGENT}  ^Test Agent/(.*)$
Run Code Online (Sandbox Code Playgroud)

您需要在正则表达式模式中转义空格并转发斜杠.

RewriteCond %{HTTP_USER_AGENT}  ^Test\ Agent\/(.*)$
Run Code Online (Sandbox Code Playgroud)

第二:

RewriteRule ^(.*)$         https://test.domain.com/$1          [L,302]
Run Code Online (Sandbox Code Playgroud)

302是重定向HTTP状态代码,但您没有指定要重定向.

RewriteRule ^(.*)$         https://test.domain.com/$1          [L,R=302]
Run Code Online (Sandbox Code Playgroud)