我的问题类似(几乎另一个问题这里:但有一个转折。
是否有人有一些有效的 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
设置呢?