根据目录是否存在,是否有办法在Apache中包含配置设置?基本上我有一个便携式硬盘驱动器,我在工作和家庭之间运输,有一些我正在开发的东西。我只希望Apache配置在文件夹存在的情况下加载特定的虚拟主机。
答案 0 :(得分:4)
不,似乎没有直接的方法来做到这一点。
可能唯一的解决方案是IfDefine
指令。您可以使用-d
参数定义定义以启动服务器。
parameter-name参数是在服务器启动时通过
-Dparameter-
在httpd命令行中给出的定义。
您可以检查批处理或bash文件中是否存在目录,并相应地设置-d
参数。
这是否是一个选项,将取决于您的服务器从便携式硬盘驱动器的启动方式。
答案 1 :(得分:4)
我提出了一个似乎适用于Linux和OS X的解决方案,它取决于“挂载点”。也可以在Windows中模拟它,但你可能必须通过FUSE和/或Cygwin获得创意。
如果在主目录中创建一个空文件夹,例如“/ Users / username / ExtraVhosts”,则可以向“Include / Users / username / ExtraVhosts /*”添加apache指令。
然后,当您插入拇指驱动器时,您可以在某处安装,然后使用mountpoint“binding”将ExtraVhosts文件夹交叉链接到移动设备上的文件夹。
OS X示例:
此时,只需在/ etc / hosts中添加服务器别名中的条目即可获取。
linux等价物将使用mount命令的“--bind”参数。
一个警告:这使得很难快速卸载USB驱动器,因为它始终被apache标记为“正在使用中”。这是一个删除程序:
然后你可以用图形或手动卸载它(umount / Volumes / Cherrybomb)。
如果你的工作和家用机器将驱动器安装到不同的位置,你可以有多个vhosts文件夹 - home_vhost,work_vhost等 - 并在绑定步骤中使用它。
我希望这可以帮助别人:)
答案 2 :(得分:1)
从Apache 2.4.34开始,您现在可以使用rebase
来检查文件是否存在。 <IfFile>
页上有更多详细信息。
答案 3 :(得分:-1)
如果您将apache指向mountpoint,则不应该存在问题。只是不要将Directory指令指向驱动器中的目录。
例如,如果你挂载/ dev / somedisk / mnt / somevhost,那么
/ mnt / somevhost目录将在那里,无论你是否安装了驱动器,apache将启动。 Apache不关心目录是否为空,因此如果未安装驱动器,<Directory "/mnt/somevhost"/>
将不会导致服务器无法启动。
使用 UNIX 使用UNIX而不是它:-p此解决方案应该足以进行开发。