Iis 我可以在htaccess中执行if/then/else吗?
我有一个网站,提供某些内容的子域的基础上。因此,它是同一组文件,并且站点页面中的标题和某些信息可能会根据子域发生变化 我也需要基于子域进行不同的htpassword身份验证,但找不到有关如何在htaccess中执行if/then类型操作的信息 基本上我需要的是: 如果子域='abc' 使用此密码文件 如果子域='def' 使用此密码文件Iis 我可以在htaccess中执行if/then/else吗?,iis,.htaccess,isapi-rewrite,Iis,.htaccess,Isapi Rewrite,我有一个网站,提供某些内容的子域的基础上。因此,它是同一组文件,并且站点页面中的标题和某些信息可能会根据子域发生变化 我也需要基于子域进行不同的htpassword身份验证,但找不到有关如何在htaccess中执行if/then类型操作的信息 基本上我需要的是: 如果子域='abc' 使用此密码文件 如果子域='def' 使用此密码文件 可以这样做吗?您正在使用哪个Web服务器 一种可能在多个不同服务器上工作的技术(在apache中当然可以工作)是在对应于每个子域的目录中有一个不同的.htacc
可以这样做吗?您正在使用哪个Web服务器 一种可能在多个不同服务器上工作的技术(在apache中当然可以工作)是在对应于每个子域的目录中有一个不同的.htaccess文件。如果是我(我以前没有想过这样做),我会:
我想看看是否有更好的东西存在。您不能使用if/else,因为htaccess不是一个指令列表。但是,如果您使用像或这样的条件块,则可以根据请求的子域使用不同的指令。我不知道你会用哪一个 您还可以将一个.htaccess文件放在文件之上一个级别,并使用为每个子域指定不同的规则,但要使子域目录与共享文件都是指向同一目录的符号链接 因此,这将是web根目录上方的目录:
.htaccess
站点文件
子域1(指向站点文件的符号链接)
子域2(指向站点文件的符号链接)
…试试这样的方法:
SetEnvIf Host ^abc\. HOST_ABC
SetEnvIf Host ^dev\. HOST_DEF
<IfDefine HOST_ABC>
AuthUserFile …
</IfDefine>
<IfDefine HOST_DEF>
AuthUserFile …
</IfDefine>
setenif主机^abc\。主持人(ABC)
SetEnvIf主机^dev\。主机定义
AuthUserFile…
AuthUserFile…
您可以使用带感叹号的伪else。请参见下面示例中的第二条指令MemCache
vs!MemCache
:
<IfDefine MemCache>
LoadModule mem_cache_module modules/mod_mem_cache.so
</IfDefine>
<IfDefine !MemCache>
LoadModule cache_disk_module modules/mod_cache_disk.so
</IfDefine>
LoadModule mem_cache_module modules/mod_mem_cache.so
LoadModule cache\u disk\u module modules/mod\u cache\u disk.so
摘自apache文档:根据发布的问题,它是同一组文件,因此没有单独的目录。它是一个Win 2003服务器,使用IISpassword和ISAPIrewrite3的IIS。您的解决方案不起作用,因为文件系统中的子域没有物理上不同的文件集——所有子域都指向同一组文件,PHP计算子域并基于此显示不同的数据。谢谢..这看起来很棒-由于时间限制,我不得不在PHP中构建一个简单的auth,但我想在测试环境中尝试一下,因为这似乎是有意义的。谢谢虽然看起来很迷人,但对我来说并不管用。你能改一下这个秋葵吗?
ln -s
SetEnvIf Host ^abc\. HOST_ABC
SetEnvIf Host ^dev\. HOST_DEF
<IfDefine HOST_ABC>
AuthUserFile …
</IfDefine>
<IfDefine HOST_DEF>
AuthUserFile …
</IfDefine>
<IfDefine MemCache>
LoadModule mem_cache_module modules/mod_mem_cache.so
</IfDefine>
<IfDefine !MemCache>
LoadModule cache_disk_module modules/mod_cache_disk.so
</IfDefine>