Rails 应用程序非默认页面缓存目录的 mod_rewrite 规则,区分移动目录和 www 目录

Rails 应用程序非默认页面缓存目录的 mod_rewrite 规则,区分移动目录和 www 目录

我的问题类似(几乎另一个问题这里:但有一个转折。

是否有人有一些有效的 Apache mod_rewrite 规则,可让 Phusion Passenger (mod_rails) 在 Rails 应用程序内使用非默认位置作为页面缓存?我希望缓存文件进入 /public/cache,而不是默认的 /public。

就我而言,我有 2 个自定义目录。“/public/www.MYSITE.com/”和“/public/m.MYSITE.com”用于移动请求。

这个特定的 mod_rewrite 代码仅适用于 www.MYSITE.com 请求:

RewriteRule ^$ /www.MYSITE.com/index.html [QSA]
RewriteRule ^([^.]+)$ /www.MYSITE.com/$1.html [QSA]

现在有没有办法从传入的 URL 中取出 www.MYSITE.com 或 m.MYSITE.com,并将其替换为查找缓存页面的目录位置?除了移动浏览器的主机前缀“m”和其他所有主机前缀“www”外,移动和 www 请求的 URL 的所有内容都是相同的。

只是为了澄清我有 mod_rewrite 条件/规则来检测运行良好的移动浏览器我只需要根据请求的子域告诉 apache 它位于哪个缓存目录。

答案1

RewriteCond可以查看请求附带的主机标头。

像这样:

RewriteCond %{HTTP_HOST} ^m [NC]
RewriteRule ^$ /m.MYSITE.com/index.html [QSA]
RewriteCond %{HTTP_HOST} ^m [NC]
RewriteRule ^([^\.]+)$ /m.MYSITE.com/$1.html [QSA]

RewriteCond %{HTTP_HOST} ^www [NC]
RewriteRule ^$ /www.MYSITE.com/index.html [QSA]
RewriteCond %{HTTP_HOST} ^www [NC]
RewriteRule ^([^\.]+)$ /www.MYSITE.com/$1.html [QSA]

但是,由于这是在处理完全不同的目录中的不同站点,为什么不对VirtualHost主机进行两种不同的配置,并使用不同的DocumentRoot设置呢?

相关内容