我工作的一个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>
上述规则不工作如我所料(授权,然后重写)
由于指令合并顺序(“如果”最后被合并)
由于从阿列克评论指出这一点
所以,当我删除IfModule括号,规则已经开始为我工作。
文章来源: .htaccess, mod_rewrite, and basic authentication