RewriteEngine 规则中的路径私有访问

RewriteEngine 规则中的路径私有访问

我有以下.htaccess 文件(MediaWiki 的常用文件):

RewriteEngine On
RewriteRule ^wiki/(.*)$ /w/index.php?title=$1 [PT,L,QSA]
RewriteRule ^wiki/*$ /w/index.php [L,QSA]
RewriteRule ^/*$ /w/index.php [L,QSA]

并且我想使用密码限制对某些路径(例如 ^wiki/Private/(.*)$)的访问。

是否有可能使用 .htaccess 来实现这一点?没有 /wiki/ 目录,因此无法将 .htpasswd 放入其中。

谢谢。

答案1

您通常会使用<Location>指令来执行此操作,但这些只能在服务器配置中指定(即,不能在.htaccess文件中指定)。您尝试使用.htaccess文件执行此操作是否有特定原因?

例如:

RewriteEngine On
RewriteRule ^wiki/(.*)$ /w/index.php?title=$1 [PT,L,QSA]
RewriteRule ^wiki/*$ /w/index.php [L,QSA]
RewriteRule ^/*$ /w/index.php [L,QSA]

<Location /wiki/Private/>
    # put your auth configuration here
</Location>

答案2

你可以使用类似的东西:

<AuthnProviderAlias file yourfile-htpasswd>
        AuthUserFile    /somedir/htpasswd
</AuthnProviderAlias>

在服务器配置文件中为身份验证提供程序分配别名。然后,类似:

AuthBasicProvider yourfile-htpasswd
AuthName "Temporary Login"
AuthType Basic
require valid-user

.htaccess文件(在Private)中应该可以工作。

看:http://httpd.apache.org/docs/2.2/mod/mod_authn_alias.html

相关内容