这就是我想用伪代码完成的事情:
if server.host equals 'productionsite.com' then
RewriteBase /
else if server.host equals 'stagingsite.com' then
RewriteBase /staging/mysite
else if server.host equals 'localhost' or server.host equals '127.0.0.1' then
Rewrite /dev/mysite
然而,到目前为止,这实际上并没有像我期望的那样起作用:
RewriteCond %{HTTP_HOST} =productionsite.com
RewriteBase /
RewriteCond %{HTTP_HOST} =stagingsite.com
RewriteBase /staging/mysite
RewriteCond %{HTTP_HOST} =localhost
RewriteBase /dev/mysite
我感谢您提前得到的任何帮助。
答案 0 :(得分:1)
本身不是答案(最初是评论),但可能对您有所帮助:
您的方法不起作用,因为RewriteBase不受RewriteCond指令的影响。 RewriteCond只能跟随另一个RewriteCond或RewriteRule。 RewriteBase是一个完全不同的野兽:我不认为有条件的RewriteBase是可能的;我有一种模糊的感觉,它是在启动时处理的,因此无法动态更改(但我可能对此非常不对)。 Google对“条件重写库”有很多点击,你可以看一下这些,但它们看起来很不利。
用IfDefine玩弄以获得类似的效果值得一试。
或者,您可以尝试使用RewriteRules和环境变量:
RewriteBase /
RewriteCond %{HTTP_HOST} =stagingsite.com
RewriteRule ^ - [E=FRB:/staging/mysite]
RewriteCond %{HTTP_HOST} =localhost
RewriteRule ^ - [E=FRB:/dev/mysite]
然后在每个重写路径前加上FRB环境变量,如
RewriteRule ^home$ %{ENV:FRB}/index.php
但这只是一个未经检验的理论。
答案 1 :(得分:0)
对我来说,https://snipt.net/beat/htaccess-different-bases-subfolders-in-developmentproduction/的解决方案正常工作
RewriteCond %{HTTP_HOST} !^localhost$
RewriteRule . - [E=REWRITEBASE:/prod/]
RewriteCond %{HTTP_HOST} ^localhost$
RewriteRule . - [E=REWRITEBASE:/dev/]