.htaccess код для защиты одного URL? - PullRequest
1 голос
/ 20 апреля 2010

Можно ли защитить один URL-адрес с помощью .htaccess? Например, у меня будет website.com/index.php?skin=name. Могу ли я защитить паролем только этот URL? (без изменений PHP, только .htaccess)

website.com/index.php или website.com/index.php?skin=other_name не должны быть ограничены.

Ответы [ 3 ]

4 голосов
/ 20 апреля 2010

Вы можете переписать адрес, чтобы защитить его следующим образом:

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/index\.php$
RewriteCond %{QUERY_STRING} ^skin=(name)$
RewriteRule ^(.*)$ /skin/%1 [PT]

<LocationMatch "/skin/name">
     AuthType Basic
     AuthName "By Invitation Only"
     AuthUserFile /path/to/passwords
     Require valid-user
</LocationMatch>
0 голосов
/ 20 апреля 2010

Лучше всего сделать это на PHP. Быстрый поиск в Google позже, и я нашел отличный способ использовать PHP_AUTH, который очень похож на приглашение входа в систему .HTACCESS

<?php
$login_successful = false;

// check user & pwd:
if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])){

    $usr = $_SERVER['PHP_AUTH_USER'];
    $pwd = $_SERVER['PHP_AUTH_PW'];

    if ($usr == 'jonas' && $pwd == 'secret'){
        $login_successful = true;
    }
}

// login ok?
if (!$login_successful){

    // send 401 headers:
    // realm="something" will be shown in the login box 
    header('WWW-Authenticate: Basic realm="Secret page"');
    header('HTTP/1.0 401 Unauthorized');
    print "Login failed!\n";

}
else {
    // show secret page:
    print 'you reached the secret page!';
}

Источник: http://snippets.dzone.com/posts/show/2006

0 голосов
/ 20 апреля 2010

Вы можете использовать mod-rewrite, чтобы перезаписать адрес на что-то другое и защитить его.

https://serverfault.com/questions/94964/apache-locationmatch-directive

Вы не можете использовать LocationMatch, даже если кажется, что вы можете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...