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

时间:2015-12-14 13:01:06

标签: apache .htaccess symfony mod-rewrite

配置AuthUserFile /home/user/.htpasswd AuthName "Developers Only" AuthType Basic Require valid-user 文件非常糟糕,我需要一些有关域和子域访问配置的帮助。我有一个htaccess文件要求用户访问我的域到Web根文件夹:

/home/user/public_html/web

问题是它需要我的子域的身份验证,我不希望它受到保护,因为它是为了公共访问。怎么能实现呢?

我的网络根目录位于/home/user/public_ftp/sites,我的子域根目录位于www

此外,我在主域的htaccess文件中有一个重定向,强制用户使用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> 进行访问,但我不知道它是否存在冲突。这是重定向:

$(document).ready(function() {

  function PopupCenterDual(url, title, w, h) {

        var dualScreenLeft = window.screenLeft != undefined ? window.screenLeft : screen.left;
        var dualScreenTop = window.screenTop != undefined ? window.screenTop : screen.top;

        width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;
        height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;

        var left = ((width / 2) - (w / 2)) + dualScreenLeft;
        var top = ((height / 2) - (h / 2)) + dualScreenTop;
        var newWindow = window.open(url, title, 'scrollbars=no, resizable=yes, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);


        if (window.focus) {
            newWindow.focus();
        }
    }

  });

我正在使用Symfony2 for PHP,因此需要这样做。

提前感谢您的所有建议。

问候。

2 个答案:

答案 0 :(得分:2)

这对我有用(只需设置允许的参考者,其余的将被拒绝):

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

答案 1 :(得分:0)

试试这个:

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