Я использую Apache, и я хочу перенаправить весь полученный запрос к ssl виртуальному хосту.
Таким образом, у меня есть следующая строка в регулярном http виртуальном хосте:
RedirectMatch (.*) https://1 www.mydomain.com$
которые в основном заменяют 1$ всем.
Это работает отлично. Но теперь, я должен получить доступ к конкретному CGI, который не может быть на SSL виртуальным хостом. Таким образом, я хотел бы перенаправить весь запрос, кроме следующего:
"http://www.mydomain.com/mycgi/cgi.php"
Я имею поиск на этом форуме и нашел некоторое сообщение относительно regex исключения, но ни один не работает. Любая справка значительно ценилась бы.
Спасибо. Alain
Apache 2.2 и более поздние версии имеют поддержку отрицательного просмотра вперед в регулярных выражениях. Если вы используете Apache 2.2 или новее, это должно работать:
RedirectMatch ^/(?!mycgi/cgi.php)(.*) https://www.mydomain.com/$1
Я считаю, что RedirectMatch - это короткое замыкание. Это означает, что если вы поместите другой RedirectMatch перед вашим match-all, только первый матч будет выполнен. так что что-то вроде...
RedirectMatch (/mycgi/cgi.php) http://www.mydomain.com$1
RedirectMatch (.*) https://www.mydomain.com$1