【问题标题】:URL rewriting and htpasswdURL重写和htpasswd
【发布时间】:2012-07-05 00:38:28
【问题描述】:

我在我的网站上使用 URL 重写,我想通过 .htpasswd 文件将身份验证添加到我的目录之一。

我的网站就是这样构建的

/home/website/
/home/website/protected/
/home/website/protected/.htaccess
/home/website/protected/.htpasswd
/home/website/protected/admin.php
/home/website/.htaccess
/home/website/index.php
/home/website/index_protected.php

在 /home/website/ 目录我有一个 .htaccess 文件:

RewriteRule ^directory([0-9]+)/protected/([a-z0-9-_]+).php   /home/website/protected/admin.php?d=$1&p=$2 [QSA]

使用 url 之类的

http//website/directory1/protected/test.php 

你会打电话的

/home/website/1/protected/admin.php?d=1&p=test

在我得到的 /protected/ 目录的 .htaccess 中:

AuthName "Page d'administration protégée"
AuthType Basic
AuthUserFile "/home/website/protected/.htpasswd"
Require valid-user

然后在 /protected/ 目录中的 .htpasswd 上,我得到了:

admin:crypted_password

但我的问题是,当我打电话时

http//website/directory1/protected/test.php

我从来没有得到身份验证窗口,有什么办法解决这个问题吗?

【问题讨论】:

    标签: php .htaccess url-rewriting .htpasswd


    【解决方案1】:

    您可以尝试将带有基本身份验证指令的 .htaccess 文件放入受保护的目录。

    【讨论】:

    • 也许我不明白,但在我的 /protected/ 目录中,我已经获得了带有“基本身份验证”指令的 .htaccess 文件
    【解决方案2】:

    这主要发生在服务器未使用 .htaccess 文件时。检查是否允许在 /home/website/protected/ 中使用该文件,而不仅仅是 /home/website/。

    【讨论】:

    • 不,如果我打开 URL website/protected/admin.php 身份验证窗口打开,所以它似乎是允许的
    • 等等,所以您在 website/protected/admin.php 上获得了身份验证屏幕,但在 website/protected/test.php 上却没有?尝试在身份验证规则后添加 RewriteRule。也许这就是你搞砸的原因。
    • 事实上,我得到了 .htaccess 文件,第一个在 /website/ 上具有重写规则,第二个在 /website/protected/ 中具有身份验证规则。在 /website/protected/admin.php 我需要从第一个 .htaccess (具有重写规则的那个)给出的 $_GET['d'] 和 $_GET['p'] 。 test.php 页面不存在,url 重写只是将其转换为 p=test 并将其发送到 /website/protected/admin.php 文件
    • 对网站/受保护的网站使用重写听起来很奇怪。重写是我唯一能想到的,它会破坏您的身份验证。尝试将其移动到受保护的 .htaccess
    • 不行,我需要重写/website/目录的url,否则访问者无法访问/directory1/
    猜你喜欢
    • 2012-01-01
    • 2016-06-27
    • 2014-10-04
    • 1970-01-01
    • 2011-06-07
    • 2020-08-26
    • 2014-06-13
    • 2013-04-10
    • 1970-01-01
    相关资源
    最近更新 更多