13

開発サーバーで基本認証をセットアップしています。httpd.confこれは、Web サイトの VirtualHost のファイル内にセットアップされています。特定のディレクトリを除外するように設定する必要がありましたが、問題は発生せず、すべて正常に動作します。

この問題は、ファイルmod_rewrite内の私のルールを通過した URL を除外することにありました。.htaccess私の設定では、すべての URL がindex.phpファイルを通過し、そこから関連するコードが検出されて実行されます。除外したい URL ( /businesses/upload_logo) を他の URL と同じように追加しようとしましたが、それでも認証が必要です。これは私が現在持っているものです:

...
<Location />
    SetEnvIf Request_URI "/businesses/upload_logo" noauth=1
    SetEnvIf Request_URI "/api/.*" noauth=1

    AuthType Basic
    AuthName "Private"
    AuthUserFile ****
    Require valid-user

    Order deny,allow
    Satisfy any
    Deny from all
    Allow from env=noauth
</Location>
....

ここここで私のものに似た質問を見つけましたが、答えは私がすでに試していることだけを教えてくれます。

他の解決策も考えましたが、これは最後の手段です。現在行っている方法で可能かどうかを確認したい:

  • 代わりに私のphpコード内で基本認証を設定してください
    • 現状面倒すぎる
  • 代わりに認証を.htaccessファイルに 入れます
    • 認証を 3 つのサーバーの 1 つだけで実行したいので、まだこれを実行したくありませんでした。もう少し使用できることは承知していますSetEnvIf HOST ...が、最初にこの方法で修正できるかどうかを確認しています。

mod_rewriteルール:

...

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php [L,QSA]
4

3 に答える 3

20

追加してみる

Allow from env=REDIRECT_noauth
于 2012-12-23T11:06:58.453 に答える
2

私にとって、このようなものは魅力のように機能します:

<location />
        SetEnvIf Request_URI "/businesses/upload_logo" REDIRECT_noauth=1
        AuthType Basic
        AuthName "Restricted Files"
        AuthUserFile /etc/httpd/passwords/passwords
        Order Deny,Allow
        Satisfy any
        Deny from all
        Allow from env=REDIRECT_noauth
        Require user yournickname
</location>
于 2013-06-21T15:10:32.000 に答える
-1

構成のどこかに競合するディレクティブがない限り、指定した内容に基づいて動作するはずです。

同様の作業セットアップを作成しましたが、URIの代わりにファイルシステムパスを使用しただけです

ここに追加します。お役に立てば幸いです

<VirtualHost *:8989 >
<IfModule mod_auth_basic.c>
 <Directory /var/www/html/vella-8989>
  # the auth block
  AuthType Basic
  AuthName "Please login."
  AuthUserFile /var/www/html/vella-8989/.htpasswd
  require valid-user

  Order Deny,Allow
  Satisfy any
  Deny from all
  Require valid-user
  Allow from env=noauth
</Directory>
</IfModule>
  # set an environtment variable "noauth" if the request has "/callbacks/"
  SetEnvIf Request_URI "/callbacks/" noauth=1
  ServerName vella.com
  ServerSignature off
</VirtualHost>
于 2012-12-21T19:00:58.753 に答える