.htaccess的备忘录(访问限制和有效期限)
在Apache中,可以将.htaccess文件放置在公开目录中,并进行各种配置。然而,由于功能太多,因此将以下常用功能整理如下。
访问限制
请注意,如果需要指定多个选项的优先顺序,下面所列的并不一定会被优先考虑。
使用IP地址进行限制
设定
只允許特定的IP地址。
order deny,allow
deny from all
allow from (許可するIPアドレスもしくはドメイン名)
allow from (許可するIPアドレスもしくはドメイン名)
.
.
.
解除的意思是结束或取消某种状态或关系。
允许访问特定的目录及其子目录。
allow from all
基于BASIC认证(通过ID和密码)的限制。
请注意BASIC认证(ID和密码)在缓存控制方面的注意事项。缓存的有效期限和BASIC认证信息的更新并没有直接的关联。此外,一些浏览器可能会多次使用旧的认证信息进行访问,但是多次输入认证信息后会自动更新。
设定
需要注意的是,完整路径部分应该使用文件系统的路径而不是URL进行描述。
AuthUserFile (フルパス)/.htpasswd
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
创建 .htpasswd 文件
如果要在当前目录中生成一个新的.htpasswd文件,可以使用以下命令在bash中执行。密码将被设置为一个10个字符的随机字符串。
username=(ユーザ名)
passwordfile=(フルパス)/.htpasswd
password=`perl -e "@c = (a..z,A..Z, 0..9); print @c[rand @c] for 1..10"`
htpasswd -c -b $passwordfile $username $password
echo "$username $password"
在新的情况下
在这里的新注册是指创建一个新的.htpasswd文件的意思。
htpasswd -c -b (フルパス)/.htpasswd ユーザ名 パスワード
如果需要更新的话。
下面的命令将更新.htpasswd文件,并添加用户或更改密码。如果.htpasswd文件不存在,则不会创建该文件。
htpasswd -b (フルパス)/.htpasswd ユーザ名 パスワード
安全
虽然几乎不会发生,但应该记住,如果像上面的例子一样直接在命令行中写入htpasswd命令的密码,则需要注意在htpasswd启动的瞬间,密码可能会在ps命令中显示出来。在当前流行的操作系统中,只有拥有进程访问权限才会有问题,但只要不共享账户,就不会有问题。
$ps
(省略)
12770 pts/1 R 0:00 htpasswd -b -c .htpasswd user3750 password
(省略)
网络服务
有几个在线生成htpasswd文件的网站可供使用。例如,下面是一个示例网站。
取消
要允许在特定目录及其子目录下无需基本验证即可访问,请按以下方式进行描述。
Satisfy any
allow from all
有效期
设置内容的有效期限。输出Expires标头或Cache-Control标头,但这里只描述Expires标头。需要mod_expires模块。单位可以是各种各样的,但只用两个单位就足够了,即天和分钟。
如果使用MIME类型的话
假设只有图像文件在60分钟内有效,而其他文件在一天内有效的情况下的示例。
ExpiresActive On
ExpiresDefault "access plus 1 days"
ExpiresByType image/* "access plus 60 minutes"
如果使用扩展名
只有js文件在60分钟内有效,其他文件在一天内有效的示例。
ExpiresActive On
ExpiresDefault "access plus 1 days"
<FilesMatch "\.js$">
ExpiresDefault "access plus 60 minutes"
</FilesMatch>
其他
反向代理
在Apache 2.4中,无法使用.htaccess进行反向代理的设置。
nginx可以被解释为一款高性能的开源Web服务器软件。
nginx没有类似.htaccess的功能。无法在运行时更改配置,所以需要修改配置文件后重新启动nginx并重新加载配置。如果非常需要实现类似功能,可以采用以下方法。然而,这些方法都难以完全复制.htaccess的功能。
-
- 設定ファイルのコンバータを用意する。htaccessを更新する度に、設定ファイルのコンバートを行いnginxを再起動設定再読込させればよい。コンバータには次のWebサービスがある。https://winginx.com/ja/htaccess
Apacheを使う。nginxをリバースプロキシで動作させApacheにアクセスする。当然、Apacheは.htaccessに対応しているので、.htaccessが使えるようになる。
参考网站
生成乱数字符串。链接:http://d.hatena.ne.jp/miau/20110324/1300966320。Apache官方文档:http://httpd.apache.org/docs。