.htaccess代码保护单个URL?

时间:2010-04-19 20:18:27

标签: .htaccess url

是否可以通过.htaccess保护单个网址?例如,我将website.com/index.php?skin=name。我可以只用密码保护这个网址吗? (没有PHP更改,只有.htaccess

website.com/index.phpwebsite.com/index.php?skin=other_name不应受到限制。

3 个答案:

答案 0 :(得分:4)

您可以重写地址以保护它:

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>

答案 1 :(得分:0)

如果您使用mod-rewrite将地址重写为其他内容并保护它,则可以。

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

您无法使用LocationMatch,即使您可以使用它。

答案 2 :(得分:0)

最好的办法是用PHP完成。稍后快速谷歌搜索,我发现了一个使用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