2013-07-18 4 views
0

моей корневой папки действительно имеет следующие .htaccess:..htaccess исключить папку,

Options -Indexes 
Options +FollowSymLinks 
<IfModule mod_rewrite.c> 
    RewriteEngine On 


    RewriteCond %{HTTP_HOST} ^yourdomain.com [NC] 
    RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [L,R=301] 


    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule .* loader.php [L,QSA] 



</IfModule> 

я хочу, чтобы исключить папку SiteAdmin из правила RewriteRule * loader.php [L, QSA] в корневой папке

внутри вложенной: "SiteAdmin" у меня есть еще файлы .htaccess, как это:

AuthType Basic 
AuthName "siteadmin" 
AuthUserFile "/home/user1/.htpasswds/public_html/siteadmin/passwd" 
require valid-user 

loader.php (на корневой директории):

<?php 
//die('Only enable this script if you dont have support for MultiViews'); 
$relative = ''; 
$loaders = array(
    'ajax' => 1, 
    'album' => 1, 
    'albums' => 1, 
    'blog' => 1, 
    'blogs' => 1, 
    'captcha' => 1, 
    'categories' => 1, 
    'community' => 1, 
    'confirm' => 1, 
    'error' => 1, 
    'feedback' => 1, 
    'feeds' => 1, 
    'game' => 1, 
    'games' => 1, 
    'index' => 1, 
    'invite' => 1, 
    'loader' => 1, 
    'login' => 1, 
    'logout' => 1, 
    'lost' => 1, 
    'mail' => 1, 
    'notice' => 1, 
    'notices' => 1, 
    'photo' => 1, 
    'requests' => 1, 
    'search' => 1, 
    'signup' => 1, 
    'static' => 1, 
    'stream' => 1, 
    'upload' => 1, 
    'user' => 1, 
    'users' => 1, 
    'video' => 1, 
    'videos' => 1, 
    'edit' => 1 
); 

$query  = (isset($_SERVER['QUERY_STRING'])) ? $_SERVER['QUERY_STRING'] : NULL; 
$request = str_replace($relative, '', $_SERVER['REQUEST_URI']); 
$request = str_replace('?' .$query, '', $request); 
$request = explode('/', trim($request, '/')); 
if (isset($request['0'])) { 
    $page = $request['0']; 
    if (isset($loaders[$page])) { 
     require $page. '.php'; 
    } else { 
     header('HTTP/1.0 404 Not Found'); 
     die(); 
    } 
} else { 
    header('HTTP/1.0 404 Not Found'); 
    die(); 
} 
?> 

loader.php делает его работу, когда я получить доступ к сайту, как http://www.domain.com/signup будет загружать signup.php

SiteAdmin до сих пор не в состоянии использовать защиту паролем. есть ли в любом случае я могу исключить папку siteadmin из правила loader.php?

+0

Если 'siteadmin' - настоящая папка, то для этого' RewriteCond% {REQUEST_FILENAME}! -d' уже пропускает для этого правило 'loader.php'. – anubhava

ответ

0

Попробуйте этот код:

Options -Indexes 
Options +FollowSymLinks 

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^yourdomain.com [NC] 
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [L,R=301] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^/siteadmin/? 
RewriteRule ^(.*)$ loader.php [L,QSA] 
+0

, который не работает, защита паролем не загружается, если я открываю siteadmin. и я вижу 404 при доступе к папке siteadmin – Redbox

+0

Хорошо. Вопрос: являются ли файлы loader.php и .htaccess в корневой папке? –

+0

Да, loader.php находится в корневой папке. – Redbox

0

база данных, как правило, рекомендуется использовать для хранения информации авторизации пользователей, тем более, что членство пользователя растет.

Чтобы исключить SiteAdmin из редиректа указанного выше, вам не нужно беспокоиться об этом. Код имеет следующие условия

 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule .* loader.php [L,QSA] 
 

первая строка говорит, что если запрос указывает на реальный файл, редирект следует игнорировать; вторая строка говорит, что если запрос указывает на фактический каталог, перенаправление также следует игнорировать.
Это означает, что всякий раз, когда запрашивается файл или каталог (включая siteadmin), перенаправление будет проигнорировано. Это решает свою первую проблему

Для второй задачи (пароль для защиты папки), вам необходимо убедиться, что mod_auth модуль включен.
Поместите что-то подобное в файл .htaccess в папке siteadmin.

 

<IfModule mod_auth.c> 
AuthType Basic 
AuthName "siteadmin" 
AuthUserFile "/home/user1/.htpasswds/public_html/siteadmin/passwd" 
require valid-user 
</IfModule> 
 



Надеюсь, что это помогает.

+0

где мы это делаем: AuthType Basic AuthName "SiteAdmin" AuthUserFile "/home/user1/.htpasswds/public_html/siteadmin/passwd" требует действительного пользователю на корневой .htaccess или внутри .htaccess SiteAdmin папки? – Redbox

+0

Я обновил свой ответ –

Смежные вопросы