2012-03-28 3 views
0

Я использую Apache как веб-сервер для перезаписи URL-адресов. Картина проста:Apache RewriteCond не полностью работает

if request starts with "/services" then 
    rewrite is off 
else 
    using ssl. replaces http with https 

Так у меня есть свое собственное решение:

RewriteEngine On 
RewriteCond %{REQUEST_URI} !^/services.* [NC] 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

Также я отделиться журналы доступа по URL-адресу, один SSL логи доступа и другой журналы доступа SSL доли не имеет. То, что я хочу видеть это журналы регистрации доступа ни содержит запрос SSL начать только с услугами .Но я нашел несколько запросов в журналах доступа никто Ssl любит это:

10.75.6.22 - - [28/Mar/2012:08:38:08 +0800] "GET /validate/showValidateProgress.jsp? 
10.186.96.70 - - [28/Mar/2012:09:01:48 +0800] "GET /vjsp/confirm.jsp? 

Запросы не начинаются с/услуг должны с помощью SSL, к сожалению, мой файл конфигурации не работает. Но в журналах доступа ssl все еще есть некоторые запросы, что означает, что часть запроса удовлетворяет моим ожиданиям. Я очень смущаюсь по поводу журналов и не могу понять, что случилось с моей конфигурацией. Благодарю.

ответ

0

Это должно работать:

# if request starts with "/services" then rewrite is off 
RewriteRule ^/services - [QSA,NC,L] 
# using ssl. replaces http with https 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
+0

До сих пор не работает, я не знаю, почему. – huangli

+0

Сравните журналы, которые я понимаю, что все запросы в журналах доступа не имеют http-кода 302! Это означает, что первый запрос не является ssl, а затем перенаправлен на https. Поэтому и ваша, и моя конфигурация правильны! Спасибо, Оливье! – huangli

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