Принудительно настроить защищенный сервер на выбранной странице через htaccess не работает - PullRequest
0 голосов
/ 08 декабря 2011

Я использую mod_rewrite, чтобы заставить две страницы использовать HTTPS, в то время как все остальные страницы должны оставаться HTTP.В настоящее время я могу успешно запустить HTTPS на нужных мне страницах, однако, когда я пытаюсь изменить все другие страницы на HTTP, мои HTTPS-страницы становятся небезопасными.Я предполагаю, что это потому, что правило изменяет URL-адреса для ресурсов, которые страница HTTPS загружает по какой-то причине.

Есть идеи?Вот файл .htaccess, с которым я работаю.(Обратите внимание, что на моем хосте требуется метод ENV: HTTPS)

# FORCE HTTPS (WORKS JUST FINE)
RewriteCond %{ENV:HTTPS} !on [NC]
RewriteCond %{REQUEST_URI} ^(/index\.php|)/(donate|achdebit)/?$
RewriteRule ^(.*)$ https://www.site.org/$1 [R,NC,L]

# FORCE HTTP (IF ADDED, BREAKS THE SITE)
RewriteCond %{ENV:HTTPS} on [NC]
RewriteCond %{REQUEST_URI} !^(/index\.php|)/(donate|achdebit)/?$
RewriteRule ^(.*)$ http://www.site.org/$1 [R,NC,L]

1 Ответ

0 голосов
/ 08 декабря 2011

Я полагаю, что вы правы, если предположите, что второе правило заставит ресурсы (css / js и т. Д.), Которые защищенная страница запрашивает, перенаправить на http. Чтобы предотвратить это, добавьте следующее

# FORCE HTTP (IF ADDED, BREAKS THE SITE)
RewriteCond %{ENV:HTTPS} on [NC]
RewriteCond %{REQUEST_URI} !^(/index\.php|)/(donate|achdebit)/?$
#NEW# only redirect requests that are not for existing files
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ http://www.site.org/$1 [R,NC,L]

или исключите активы, заменив #new выше на

#only redirect requests that are not for existing files
RewriteCond %{REQUEST_URI} !\.(css|js|png|gif|etc) [NC]
...