Apache .htaccess-从域密码保护中排除子域

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

我在配置.htaccess文件时非常糟糕,我需要一些关于域和子域访问配置的帮助。我有一个htaccess文件,要求用户访问我的域并将其放入web根文件夹:

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不同的东西,所以它可以工作。。。很好,有一个不方便。我的用户可以访问我们的平台,但他们不知道。无论如何,我会把它作为未来的答案,如果有用的话,我真的很感激你的建议。