Apache: обслуживание оценок по HTTP, когда сайт работает по HTTPS - PullRequest
0 голосов
/ 15 февраля 2012

Наш сайт работает по HTTPS.Есть ли способ принять HTTP-запрос для URL-адресов, содержащих /public/?Для всех других HTTP-запросов они должны быть перенаправлены на HTTPS.

У меня есть RoR приложение, работающее на apache + passenger.

EDIT

Поскольку запросы активов (/public/) будут явно на HTTP, как насчет создания еще одного VHOST для обработки HTTP запросов.А для любых запросов, отличных от /public/, можно напрямую перенаправить на HTTPS?Если мы можем пойти по этому пути, как мы можем установить это в VHOST для HTTP?

РЕДАКТИРОВАТЬ 2

Извините, мне следовало разработать это в первую очередь.Вот наша установка.Там два отдельных приложения.Один работает по HTTPS (S), а другой по HTTP (P).Приложение P извлекает данные (полную HTML-страницу, назовите ее page) из S и обрабатывает для клиента.Файл CSS, используемый в page, расположен на 'S', поэтому мне нужно HTTPS в ссылке CSS.Я хочу использовать HTTP вместо ссылки на CSS.

1 Ответ

1 голос
/ 15 февраля 2012

Вы можете использовать mod_rewrite и поместить файл .htaccess с указанным ниже содержимым в ваш DocumentRoot.

Options +FollowSymLinks -MultiViews -Indexes
RewriteEngine on
RewriteBase /

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

Rewritecond %{REQUEST_URI} .*/public/.* [NC]
RewriteCond %{HTTPS} on
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Rewritecond %{REQUEST_URI} !.*/public/.* [NC]
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

NameVirtualHost *:80

Listen 80
Listen 443

<VirtualHost *:80>
ServerAdmin username@somesite.com
DocumentRoot /pathto/DocumentRoot
ServerName domain.com

ErrorLog path/to/your-error_log
CustomLog path/to/your-access_log common

RewriteEngine on
RewriteBase /

Rewritecond %{REQUEST_URI} !.*/public/.*$ [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

</VirtualHost>


<VirtualHost *:443>
ServerAdmin username@somesite.com
DocumentRoot /pathto/DocumentRoot
ServerName domain.com

ErrorLog path/to/your-error_log
CustomLog path/to/your-access_log common

RewriteEngine on
RewriteBase /
Rewritecond %{REQUEST_URI} .*/public/.*$ [NC]
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

#All the other directives pertaining to SSL add below

</VirtualHost>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...