htaccess的,mod_rewrite的,和基本身份验证(.htaccess, mod_rewr

2019-09-21 23:29发布

我工作的一个WordPress的网站,我的网页使用的是固定链接结构mod_rewrites它们看起来像目录。 几页我想使用基本身份验证密码保护几个页面。 我怎么会写这在我的.htaccess文件? 我是否保护文件,或重写的地址?

Answer 1:

您不需要为这个mod_rewrite的,但愿,这应该做的伎俩:

SetEnvIfNoCase Request_URI ^/some/path/to/protect require_auth=true
SetEnvIfNoCase Request_URI ^/another/protected/path require_auth=true

# Auth stuff
AuthUserFile /var/www/htpasswd
AuthName "Password Protected"
AuthType Basic

# Setup a deny/allow
Order Deny,Allow
# Deny from everyone
Deny from all
# except if either of these are satisfied
Satisfy any
# 1. a valid authenticated user
Require valid-user
# or 2. the "require_auth" var is NOT set
Allow from env=!require_auth

该的mod_auth和mod_env模块应该对mod_rewrite的precidence,让你的假目录结构应保持不变。 你只需要填写一张SetEnvIfNoCase Request_URI ^/some/path/to/protect require_auth=true为每一个,然后填写的权威性东西剩下来满足您的需求。



Answer 2:

我有这个解决方案的唯一问题是,点击取消按钮将显示受保护的页面。 我试图通过使用来解决这个问题:

RewriteCond %{REMOTE_USER} !user
RewriteRule ^/protected-page /unauthenticated-page [R=401]

但是,这并不能正常工作。 我不知道为什么。

为了解决这个问题,快速和肮脏的我加

ErrorDocument 401 "You don't have access."

要创建我用这个重定向

ErrorDocument 401 '<html><head><meta http-equiv="refresh" content="0; url=/unauthenticated-page" /></head><body></body></html>'


Answer 3:

对于那些谁来到这里同样的问题我用的.htaccess这样

AuthType Basic
AuthName "some_name"
AuthUserFile "/path/to/password/passwd"
require valid-user
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

上述规则不工作如我所料(授权,然后重写)

由于指令合并顺序(“如果”最后被合并)

由于从阿列克评论指出这一点

所以,当我删除I​​fModule括号,规则已经开始为我工作。



文章来源: .htaccess, mod_rewrite, and basic authentication