Регулярные выражения - PullRequest
       9

Регулярные выражения

5 голосов
/ 27 апреля 2010

Я использую Apache и хочу перенаправить все полученные запросы на виртуальный хост ssl.

Итак, у меня есть следующая строка в обычном виртуальном хосте http:

RedirectMatch (. *) https://www.mydomain.com$1

, которые в основном заменяют 1 доллар на все.

Работает отлично. Но теперь мне нужно получить доступ к определенному CGI, который не может быть на виртуальном хосте SSL. Поэтому я хотел бы перенаправить все запросы, кроме следующего:

"http://www.mydomain.com/mycgi/cgi.php"

У меня есть поиск на этом форуме, и я нашел несколько сообщений, касающихся исключения регулярных выражений, но ни один из них не работает Любая помощь будет принята с благодарностью.

Спасибо. Alain

Ответы [ 2 ]

2 голосов
/ 27 апреля 2010

Apache 2.2 и более поздние версии имеют отрицательную поддержку в регулярных выражениях. Если вы используете Apache 2.2 или более позднюю версию, это должно работать:

RedirectMatch ^/(?!mycgi/cgi.php)(.*) https://www.mydomain.com/$1
1 голос
/ 27 апреля 2010

Я считаю, что RedirectMatch является соглашением о коротком замыкании . Это означает, что, если вы поставите другой RedirectMatch перед вашим соответствием, будет выполняться только первое совпадение. так что-то вроде ...

RedirectMatch (/mycgi/cgi.php) http://www.mydomain.com$1 
RedirectMatch (.*) https://www.mydomain.com$1 
...