Apache .htaccess-从域密码保护中排除子域
我在配置.htaccess文件时非常糟糕,我需要一些关于域和子域访问配置的帮助。我有一个htaccess文件,要求用户访问我的域并将其放入web根文件夹:Apache .htaccess-从域密码保护中排除子域,apache,.htaccess,symfony,mod-rewrite,Apache,.htaccess,Symfony,Mod Rewrite,我在配置.htaccess文件时非常糟糕,我需要一些关于域和子域访问配置的帮助。我有一个htaccess文件,要求用户访问我的域并将其放入web根文件夹: AuthUserFile /home/user/.htpasswd AuthName "Developers Only" AuthType Basic Require valid-user 问题是,它需要对我的子域进行身份验证,我不希望它受到保护,因为它是用于公共访问的。如何才能做到这一点 我的web根目录位于/home/user/publ
AuthUserFile /home/user/.htpasswd
AuthName "Developers Only"
AuthType Basic
Require valid-user
问题是,它需要对我的子域进行身份验证,我不希望它受到保护,因为它是用于公共访问的。如何才能做到这一点
我的web根目录位于/home/user/public\u html/web,我的子域根目录位于/home/user/public\u ftp/sites
另外,我在htaccess文件中为主域设置了一个重定向,以强制用户使用www进行访问,我不知道这是否冲突。以下是重定向:
DirectoryIndex app.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule (.*) http://www.domain.com/$1 [R=301,L]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^app\.php(/(.*)|$) %{CONTEXT_PREFIX}/$2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteRule .? %{ENV:BASE}app.php [L]
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
RedirectMatch 302 ^/$ /app.php/
</IfModule>
</IfModule>
我正在使用Symfony2 for PHP,因此这是必需的
提前感谢您的建议
问候。试试这个:
SetEnvIf host ^sub\.domain\.com$ noauth=1
#auth
AuthUserFile /home/user/.htpasswd
AuthName "Developers Only"
AuthType Basic
Require valid-user
#Here is where we allow/deny
Order Deny,Allow
Satisfy any
Deny from all
Require valid-user
Allow from env=noauth
将sub.domain.com替换为您不想密码保护的子域。这对我有效,只需设置允许的引用,其余将被拒绝:
SetEnvIfNoCase Referer "^http://example.com/" locally_linked=1
SetEnvIfNoCase Referer "^http://example.com$" locally_linked=1
SetEnvIfNoCase Referer "^http://www.example.com/" locally_linked=1
SetEnvIfNoCase Referer "^http://www.example.com$" locally_linked=1
SetEnvIfNoCase Referer "^http://subdomain.example.com/" locally_linked=1
SetEnvIfNoCase Referer "^http://subdomain.example.com$" locally_linked=1
SetEnvIfNoCase Referer "^$" locally_linked=1
在此之后,您可以执行以下操作:
Order Allow,Deny
Allow from env=locally_linked
我已经试过了,但仍然没有成功。正如我在谷歌上读到的,当你的请求是从该子域进入该域以忽略身份验证,但不允许从外部进入该子域以忽略身份验证时,这种方法是有效的。不管怎样,谢谢大家的帮助谢谢你的建议!我将对它进行测试,因为我使用了与ApacheAuth+symfony user auth不同的东西,所以它可以工作。。。很好,有一个不方便。我的用户可以访问我们的平台,但他们不知道。无论如何,我会把它作为未来的答案,如果有用的话,我真的很感激你的建议。