6

私はWordpressサイトで作業しており、私のページは、ディレクトリのように見えるようにmod_rewritesするパーマリンク構造を使用しています。いくつかのページでは、基本認証を使用していくつかのページをパスワードで保護したいと思います。これを.htaccessファイルに書き込むにはどうすればよいですか?ファイルを保護していますか、それとも書き換えられたアドレスを保護していますか?

4

3 に答える 3

8

これには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よりも重要である必要があるため、偽のディレクトリ構造は同じままである必要があります。それぞれにaSetEnvIfNoCase Request_URI ^/some/path/to/protect require_auth=trueを入力してから、ニーズに合わせて残りの認証情報を入力する必要があります。

于 2012-08-30T21:15:40.130 に答える
1

このソリューションで私が抱えている唯一の問題は、キャンセルボタンをクリックすると保護されたページが表示されることです。私はこれを使用してこれを解決しようとしました:

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>'
于 2015-03-31T08:46:17.613 に答える
1

私と同じ問題でここに来た人のために、このような.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>

上記のルールが期待どおりに機能していません(承認してから書き換えます)

ディレクティブのマージ順序のため(「If」が最後にマージされる場合)

それを指摘するためにアレクからのコメントに感謝します

そのため、IfModuleブラケットを削除すると、ルールが機能し始めました。

于 2016-02-03T17:39:50.323 に答える