首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >htaccess密码保护和mod-rewrite?

htaccess密码保护和mod-rewrite?
EN

Stack Overflow用户
提问于 2010-05-21 14:48:18
回答 1查看 1.1K关注 0票数 1

我想知道如何才能解决下面的问题。在我的服务器的根目录上有一个名为upload.php的文件

我希望能够添加一个"/upload“(没有.php)到我的网址,浏览器应该要求输入密码(如果可能的话,还可以要求输入用户名)。我输入的密码(和用户名)是正确的,upload.php应该是打开的。

使用htaccess可以做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-21 17:44:59

是的,这是两个截然不同的问题。

首先:删除.php扩展

主要有两种方法可以做到这一点。

  • 启用内容协商会抛出MultiViews。这将允许您引用没有扩展名的其他资源,甚至有几个名称相似但扩展名不同的文件,并让Apache根据浏览器的喜好选择最好的文件。请参阅该链接。如果您允许覆盖此选项,则可以在http.conf或.htaccess中的块中使用Options +MultiViews启用它。
  • 使用mod_rewrite。一个专门针对您的案例的规则可以是RewriteRule ^upload$ upload.php。这也可以放在http.conf或.htaccess中的块中(如果激活)。您需要使用RewriteEngine on.

启用mod_rewrite和重写引擎

秒:需要身份验证

使用PHP和Apache都可以做到这一点。

对于Apache,请参阅文档here.

  • For
  • ,使用基本身份验证(请注意,密码将以明文形式发送到服务器,除非您正在使用https,否则可能会被监视您的流量的人窥探),您可以执行以下操作:

代码语言:javascript
复制
function send401() {
    $realm = "Credentials for upload";
    header('WWW-Authenticate: Basic realm="'.$realm.'"');
    header('HTTP/1.1 401 Unauthorized');
    die();
}

function verify_credentials($user, $password) {
    //check user and password here. Return true or false
    return true;
}

if (!array_key_exists('PHP_AUTH_USER',$_SERVER) ||
        !array_key_exists('PHP_AUTH_PW',$_SERVER)) {
    send401();
}
elseif (!verify_credentials($_SERVER['PHP_AUTH_USER'],
        $_SERVER['PHP_AUTH_PW']))
    send401();

//if it gets here, the user was successfully authenticated
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2880083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档