我正在尝试构建并测试“m”。我正在研究的网站的子域名。 “m.domain.com”只是“domain.com”的一个cname,将用于设置服务器端布尔值,因此该站点的移动版本将使用不同的css和脚本提供完全相同的页面。 / p>
在我测试时,我想要对m.domain.com发出的所有请求都要求密码。我在环境变量解决方案上尝试了几种.htaccess变体,这就是我现在所拥有的:
SetEnvIfNoCase Host m\.domain\.com is_mobile
AuthType basic
AuthName "Mobile site"
AuthUserFile ".htpasswd"
Require valid-user
Order allow,deny
Allow from all
Deny from env=is_mobile
Satisfy any
使用此代码,“domain.com”和“www.domain.com”正常显示。 “m.domain.com”按预期提示输入密码。但是,一旦输入,服务器就会在任何请求中返回500错误。
答案 0 :(得分:1)
嗯,事实证明有点反转和重新排序可以解决这个问题。
SetEnvIfNoCase Host ^(www\.)domain\.com$ not_mobile
AuthType basic
AuthName "Mobile site"
AuthUserFile ".htpasswd"
Order deny,allow
Deny from all
Allow from env=not_mobile
Require valid-user
Satisfy any
我仍然很想知道为什么其他配置会产生500错误,特别是因为它只发生在我想要密码保护的子域中。