2012-02-15 92 views
0

我們的網站運行在HTTPS上。有沒有辦法接受包含/public/的URL的HTTP請求?對於所有其他HTTP請求,它們應該重定向到HTTPS。Apache:在HTTPS上運行站點時通過HTTP提供資源

我有RoR應用程序運行在apache + passenger

編輯

由於資產(/public/)請求將被明確地對HTTP,如何創建另一個VHOST處理HTTP請求。並且對於除/public/之外的任何請求都可以直接重定向到HTTPS?如果我們可以這樣做,我們如何設置VHOSTHTTP

EDIT 2

我很抱歉,我應該已經在首位闡述這一點。這是我們的設置。有兩個獨立的應用程序一個在HTTPS(S)上運行,另一個在HTTP上運行(P)。應用程序PS中提取數據(完整的HTML頁面,稱爲page)並呈現給客戶端。在page中使用的CSS文件位於'S',所以我需要在CSS鏈接中使用HTTPS。我想用HTTP來引用CSS。

+0

您的用戶可能會得到一個瀏覽器警告有關混合(安全+不安全)的內容。 – 2012-02-16 15:07:49

+0

請參閱上面我的問題中的編輯2。 – Saim 2012-02-16 16:21:37

回答

1

您可以使用mod_rewrite並在您的DocumentRoot中放置一個.htaccess文件,其中包含以下內容。

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 [email protected] 
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 [email protected] 
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> 
+0

謝謝,我會試一試,讓你知道它是怎麼回事。 – Saim 2012-02-15 17:12:05

+0

@ Imran sure .... – ThinkingMonkey 2012-02-15 17:13:58

+0

由於資產('/ public /')請求將顯式地在HTTP上,所以如何創建另一個'VHOST'來處理HTTP請求。而對於'/ public /'以外的任何請求可以直接重定向到HTTPS?如果我們可以這樣做,那麼我們如何在HTTP的'VHOST'中設置它? – Saim 2012-02-16 14:59:32