【问题标题】:.htaccess - Exclude subdomain from domain password protection.htaccess - 从域密码保护中排除子域
【发布时间】:2016-02-14 15:27:33
【问题描述】:

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

AuthUserFile /home/user/.htpasswd
AuthName "Developers Only"
AuthType Basic
Require valid-user

问题是它需要对我的子域进行身份验证,我不希望它受到保护,因为它是供公共访问的。怎样才能做到这一点?

我的网络根目录在/home/user/public_html/web,我的子域根目录在/home/user/public_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,所以这是必需的。

提前感谢您的所有建议。

问候。

【问题讨论】:

    标签: apache .htaccess symfony mod-rewrite


    【解决方案1】:

    这对我有用(只需设置允许的推荐人,其余的将被拒绝):

    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
    

    【讨论】:

    • 感谢您的建议!我将对其进行测试,因为我使用了与 apache auth + symfony 用户身份验证不同的东西,所以它工作得很好……很好,但有一个不方便。我的用户可以访问我们的平台,但他们不知道。无论如何,我会把它留作未来,如果工作的话,我会把它标记为答案^^我真的很感谢你的建议。
    【解决方案2】:

    试试这个:

    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 替换为您不想使用密码保护的子域。

    【讨论】:

    • 我试过了,还是不行。当我阅读谷歌搜索这个问题时,当您的请求是从该子域发出到域以忽略身份验证,但不允许从外部访问忽略身份验证的子域时,这有效。无论如何,谢谢^^感谢所有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多