0

私のルートフォルダーには次の.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>

RewriteRuleのルールからsiteadminのフォルダを除外したい .* ルートフォルダの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 をロードします。

サイト管理者はまだパスワード保護を使用できません。とにかく、loader.php ルールからフォルダ siteadmin を除外できますか?

4

2 に答える 2

0

通常、ユーザーのログイン情報を保存するためにデータベースを使用することをお勧めします。特に、ユーザー メンバーシップが増加する場合は特にそうです。

上で指定したリダイレクトからsiteadminを除外するために、それについて心配する必要はありません。コードにはこれらの条件があります

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

最初の行は、リクエストが実際のファイルを指している場合、リダイレクトを無視する必要があることを示しています。2行目は、リクエストが実際のディレクトリを指している場合、リダイレクトも無視する必要があることを示しています。
これは、ファイルまたはディレクトリ (siteadmin を含む) が要求されるたびに、リダイレクトが無視されることを意味します。これで最初の問題は解決します

2 番目の問題(フォルダーを保護するパスワード)については、 mod_authモジュールが有効になっていることを確認する必要があります。
このようなものを、siteadmin フォルダー内の .htaccess ファイルに入れます。


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



お役に立てれば。

于 2013-07-19T07:55:07.723 に答える
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]
于 2013-07-18T11:34:05.233 に答える