上午,
我的.htaccess文件中有两个条目,我想让它们更有活力。
首先,我有一个非www到www。重定向
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
但是,我希望它能有条件地发挥作用,如下所示
<IfModule mod_rewrite.c>
RewriteCond %{ENV:environment} != "dev" && != "local"
RewriteCond %{HTTP_HOST} {DOESNT_CONTAIN .staging.com}
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
所以基本上,我想要www。如果env变量不等于dev或local,则重定向以启动,并且域中没有.staging.com
我该怎么做呢?
其次,这几乎是一个相同的问题,我有一些身份验证
Order deny,allow
Deny from all
AuthType Basic
AuthUserFile /var/www/vhosts/{HTTP_HOST}/httpdocs/.htpasswd
AuthName "Protected Area"
require valid-user
Allow from 127.0.0.1
Satisfy Any
我希望这只能在与上述相同的条件下运行,所以: 环境!=“本地” 环境!=“开发” 网址不包含.staging.com
希望你们中的一些人能够解决这个问题。
非常感谢!
答案 0 :(得分:3)
对于mod_rewrite部分:
RewriteCond %{ENV:environment} != "dev" && != "local"
RewriteCond %{HTTP_HOST} {DOESNT_CONTAIN .staging.com}
会变成:
RewriteCond %{ENV:environment} !dev
RewriteCond %{ENV:environment} !local
RewriteCond %{HTTP_HOST} !\.staging\.com
对于mod_auth部分,您需要为主机和dev / local设置一个env变量:
SetEnvIfNoCase Host .staging.com noauth=true
SetEnvIf environment dev noauth=true
SetEnvIf environment local noauth=true
然后添加额外的Allow
声明:
Allow from env=noauth