当请求请求 public 资产时,如何防止乘客将 http 请求重定向到 rails 服务器?
How prevent passenger to redirect the http request to the rails server when the request ask for a public asset?
我正在使用 Apache2 和 Passenger 为我的网络 rails 应用程序提供服务。
我正在使用 Rails 的资产管道来提供来自 Rails.root/public 文件夹的静态资产。
通常当请求一个资产文件时,Apache2 成功找到对应的资产文件并提供服务。我对此很满意。
但是当资产丢失时,Passenger 正在接管请求并将其重定向到 rails。然后 Rails 生成 404 错误。
我的目标是防止 Apache/Passenger 在资产丢失时重定向到 Rails 应用程序。我试图在不使用 Rails 的情况下生成 404 错误。我希望一旦 Apache2 无法获取资产,他就会发回错误。
我正在使用虚拟主机,这是我的配置文件。 (我正在使用 SSL)
我希望 public 文件夹仅在 Apache 中提供,即使文件丢失也是如此。
<VirtualHost *:443>
ServerName DOMAIN_NAME
DocumentRoot /home/RAILS_APP_PATH/public
#Here I saw some others configurations files having other directives, maybe I should add one.
PassengerFriendlyErrorPages On
RewriteEngine On
ErrorDocument 503 /503.html
RewriteCond %{REQUEST_URI} !^/503.html$
RewriteCond %{DOCUMENT_ROOT}/../tmp/maintenance.txt -f
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /503.html [NC,R=503,L]
RewriteCond %{DOCUMENT_ROOT}/../tmp/maintenance.txt !-f
RewriteCond %{REQUEST_URI} ^/503.html
RewriteRule ^503.html https://DOMAIN_NAME.com/ [R=302,L]
SSLEngine ON
SSLCertificateFile /home/SSL_PATH/certificat.crt
SSLCertificateKeyFile /home/SSL_PATH/certificat.key
SSLCertificateChainFile /home/SSL_PATH/bundle.crt
</VirtualHost>
试试这个:)
<Location /public>
PassengerEnabled off
</Location>
我正在使用 Apache2 和 Passenger 为我的网络 rails 应用程序提供服务。
我正在使用 Rails 的资产管道来提供来自 Rails.root/public 文件夹的静态资产。 通常当请求一个资产文件时,Apache2 成功找到对应的资产文件并提供服务。我对此很满意。
但是当资产丢失时,Passenger 正在接管请求并将其重定向到 rails。然后 Rails 生成 404 错误。
我的目标是防止 Apache/Passenger 在资产丢失时重定向到 Rails 应用程序。我试图在不使用 Rails 的情况下生成 404 错误。我希望一旦 Apache2 无法获取资产,他就会发回错误。
我正在使用虚拟主机,这是我的配置文件。 (我正在使用 SSL) 我希望 public 文件夹仅在 Apache 中提供,即使文件丢失也是如此。
<VirtualHost *:443>
ServerName DOMAIN_NAME
DocumentRoot /home/RAILS_APP_PATH/public
#Here I saw some others configurations files having other directives, maybe I should add one.
PassengerFriendlyErrorPages On
RewriteEngine On
ErrorDocument 503 /503.html
RewriteCond %{REQUEST_URI} !^/503.html$
RewriteCond %{DOCUMENT_ROOT}/../tmp/maintenance.txt -f
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /503.html [NC,R=503,L]
RewriteCond %{DOCUMENT_ROOT}/../tmp/maintenance.txt !-f
RewriteCond %{REQUEST_URI} ^/503.html
RewriteRule ^503.html https://DOMAIN_NAME.com/ [R=302,L]
SSLEngine ON
SSLCertificateFile /home/SSL_PATH/certificat.crt
SSLCertificateKeyFile /home/SSL_PATH/certificat.key
SSLCertificateChainFile /home/SSL_PATH/bundle.crt
</VirtualHost>
试试这个:)
<Location /public>
PassengerEnabled off
</Location>