我需要使用用户名/密码密码保护网站,但需要保持"/ assets"文件夹可访问,因为images/css等文件正在其他网站上嵌入.
我有这个保护:
Order Allow,Deny
AuthType Basic
AuthName "Password"
AuthUserFile /var/www/.htpasswd
Require valid-user
Satisfy Any
Run Code Online (Sandbox Code Playgroud)
如何指定保护/ assets文件夹中的所有内容?
假设一个小的(页面<5)站点,什么是.htaccess
和.htpassword
?的正确用法?我最近看了Nettuts +的教程,其中给出了这个示例代码:
的.htaccess
AuthName "Login title"
AuthType Basic
AuthUserFile /path/to/.htpasswd
require valid-user
Run Code Online (Sandbox Code Playgroud)
.htpasswd (使用htpasswd -c <file> <username>
命令创建)
username:encrypted-version-of-password
Run Code Online (Sandbox Code Playgroud)
我也对这提供的实际安全级别感到好奇:它可以轻易绕过吗?如果默认情况下Apache不允许用户直接访问这两个文件中的任何一个,那么它们是否需要位于公共目录之外?有速度影响吗?
我在开发服务器上有一个基本身份验证设置.它是在我的httpd.conf
文件中为网站的VirtualHost设置的.我必须将它设置为排除某些目录,这些目录没有引起任何问题并且一切正常.
问题在于排除已通过文件中的mod_rewrite
规则的URL .htaccess
.我的设置是我有所有URL通过我的index.php
文件,并从那里找到并运行相关的代码.我尝试添加我想要排除的URL(/businesses/upload_logo
),就像我做其他人一样,但它仍然需要身份验证.这就是我目前拥有的:
...
<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>
....
Run Code Online (Sandbox Code Playgroud)
我在这里和这里找到了与我类似的问题,但答案只给了我正在尝试的东西.
我也想过其他可能的解决方案,但这些都是最后的选择.我想看看我现在的做法是否可行:
.htaccess
文件中
SetEnvIf HOST ...
但我想看看它是否可以这样修复或不首先修复.该mod_rewrite
规则:
...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php [L,QSA]
Run Code Online (Sandbox Code Playgroud) 我想知道是否可以根据.htaccess文件中的虚拟主机URL设置条件http基本身份验证要求.
例如,我想要做的是让mysite.com和test.mysite.com在同一目录中运行相同的代码库,但密码保护test.mysite.com.它将以这种方式设置,以便我不需要分支我的代码,因为我的应用程序代码可以看到它从哪个vhost/url服务并选择数据库来提供内容.
我有一个特定于语言的子域,它指向与我的站点相同的目录.我使用PHP来检测它并显示语言.
我希望只在这个子域上设置一个htpasswd.请记住,没有特定于此子域的物理目录.因此,该语句将与我站点的根目录在同一个htaccess中.
我需要htaccess才能这样做:
if request is mysubdomain.domain.com
AuthUserFile /www/.htpasswd
AuthName "Locked"
AuthType Basic
Run Code Online (Sandbox Code Playgroud)
谢谢
我需要能够在Apache站点配置中设置一个环境变量,用于定义站点是开发,测试还是生产.
Web根目录中的htaccess文件将根据Apache配置中的条目定义网站的配置变量(数据库凭据,域等)
我还需要在位于另一个目录中的另一个htaccess中使用web根htaccess中定义的变量之一.
我想在他们的Apache站点配置文件中为我的dev和beta环境设置一个环境变量
(我确定它不是正确的语法)
SetEnv environment_type dev
Run Code Online (Sandbox Code Playgroud)
- 要么 -
SetEnv environment_type beta
Run Code Online (Sandbox Code Playgroud)
生产站点apache config可能根本不设置它,或者它可以:
SetEnv environment_type prod
Run Code Online (Sandbox Code Playgroud)
但这是可选的
然后,在公共webroot的.htaccess文件中设置用于数据库连接,域名等的配置变量,如下所示:
(再次,只是模拟语法)
<If (environment_type exists) && (environment_type == dev)>
SetEnv base_dir /www/example.com/dev/
SetEnv db_host localhost
SetEnv db_name devdb
SetEnv db_user devuser
SetEnv db_password devpass
SetEnv web_domain www.devdomain.com
SetEnv cookie_domain .devdomain.com
<elseif (environment_type exists) && (environment_type == beta)>
SetEnv base_dir /www/example.com/beta/
SetEnv db_host localhost
SetEnv db_name betadb
SetEnv db_user betauser
SetEnv …
Run Code Online (Sandbox Code Playgroud) 我的问题很简单.
如何允许用户更改存储在linux中的某些htpasswd文件中的密码而不泄露文件内容或允许用户修改其他密码?
我尝试使用ssh和specialy设计的用户编写一个脚本来完成这项工作,但现在它会引导.
请帮忙.我正在使用Debian服务器"Lenny".
我正在尝试密码保护我的Nginx支持的网站上的目录,其中包含phpMyAdmin,MemcacheMyAdmin和更多管理实用程序.
此目录位于我的站点的根目录中:
domain.com/control/
Run Code Online (Sandbox Code Playgroud)
我服务器上的绝对路径是:
/home/deployer/sites/domain.com/control/
Run Code Online (Sandbox Code Playgroud)
我使用以下命令在目录中创建了一个.htpasswd文件:
htpasswd -c /home/deployer/sites/domain.com/control/.htpasswd admin
Run Code Online (Sandbox Code Playgroud)
该文件存在,由"root"用户拥有,并且是0644权限.
在Nginx中此域的.conf文件中,我使用以下位置块来要求身份验证.
location /control {
auth_basic "Restricted Area: Control";
auth_basic_user_file /home/deployer/sites/domain.com/control/.htpasswd;
}
Run Code Online (Sandbox Code Playgroud)
当进入受密码保护的目录时,系统会提示我输入用户名和密码.我输入我之前创建的凭据,然后我会看到错误403禁止页面.
访问日志显示我正在访问登录提示,然后以"admin"用户身份登录:
64.123.456.225 - - [12/May/2013:17:30:48 +0000] "GET /control HTTP/1.1" 401 597 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31"
64.123.456.225 - admin [12/May/2013:17:30:48 +0000] "GET /control HTTP/1.1" 301 185 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31"
64.123.456.225 - admin [12/May/2013:17:30:59 +0000] "GET /control/memcache/ HTTP/1.1" 403 199 "-" "Mozilla/5.0 …
Run Code Online (Sandbox Code Playgroud) 我想知道是否可以在.htpasswd
文件上写评论.
为什么?因为有时候,我们必须"禁用"一些用户,只需几天.我查看了StackOverflow和其他网站,看起来很混乱:
::
#
(如.htaccess)::bar:$apr1$G3iw8iqc$IGNoXDw7e7HolcSgE/V0a0
#foo:$apr1$3dJLDmbn$/zODUbSXmqDfeeCmMFKO8/
注意:例如,我不想通过在行的开头添加假char来禁用用户.如果可能的话,我想要一个干净的方式;)
测试后,双方似乎工作,但我想要一些专家意见(顺便说一句,并没有VIM做语法高亮既不::
也不#
)
我有一个 Apache 服务器 v2.4.43 为我的网站提供服务,并且我使用一个简单的 .htpasswd,我使用指令“AuthUserFile <path to my .htpasswd file>”在 .htaccess 中调用它来进行身份验证。
现在,该解决方案适用于所有浏览器(将显示一个弹出窗口,要求输入用户名/密码),但 Edge 浏览器(基于 Chromium 版本 84.0.522.52)除外。在显示要求您提供凭据的弹出窗口之前,它会引发以下错误:
Unauthorized
This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required.
Apache/2.4.43 (Unix) Server at mywebsite.com Port 443
Run Code Online (Sandbox Code Playgroud)
任何想法将不胜感激。