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] 

Но я получаю при запуске веб-сервера является:

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

Это выглядит нормально для меня, но я, очевидно, что-то отсутствует, и ошибка не помогает значительно , Есть идеи?

Спасибо, J

ответ

12

Есть 2 ошибки:

Первый:

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

Вам нужно бежать пространство и forwa rd в вашем шаблоне регулярных выражений.

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

Отлично, это было именно так! Кажется, я никогда не получаю Regex, независимо от того, насколько сильно я стараюсь, это просто кажется мне чужим. В любом случае, правила работают отлично. Благодарю. – JWood

+0

Чтобы быть ясным, проблема заключалась не в выделении регулярных выражений, а в синтаксисе синтаксиса конфигурационного файла. Пространства отлично выглядят в выражении без экранирования, но кавычки должны использоваться в файле конфигурации, если есть (или могут быть) пробелы. – AndrewF

1

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

shuld быть: RewriteRule ^(.*)$ https://test.domain.com/ $1 [R=302]

+0

Спасибо за ответ, что определенно является частью проблемы, тот факт, что я не сбежал из регулярного выражения, был другой проблемой. – JWood

Смежные вопросы