Den*_*ler 15 ip 301-redirect restriction apache-2.4
我试图将特定 URL 限制为只能在网络外部使用特定 IP 地址。当外部用户尝试访问该 URL 而不是来自 IP 列表时,他应该被重定向到主页。
这是我迄今为止尝试过的方法,但没有任何运气。最后一部分无论IP如何,它都会将所有人重定向到主页。
<Location "/secret">
# <If "%{REMOTE_ADDR} != -ipmatch '123.123.123.123/255.255.255.255'">
# Redirect 303 "/secret" /
# </If>
RewriteCond "%{REMOTE_ADDR}" "!123\.123\.123\.123"
RewriteRule .* / [R,L]
LogLevel debug rewrite:trace6
</Location>
Run Code Online (Sandbox Code Playgroud)
PS:/secret URL 实际上是一个虚拟 URL,并不存在于驱动器上。
Lin*_*ztm 25
Apache 2.4 中的 Order、Deny 和 Allow 选项已被替换为
<Directory /var/www/mysite.com/htdocs/public>
Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)
您可以通过使用以下内容来明确限制地址:
<Directory /var/www/mysite.com/htdocs/public>
Require all granted
Require not ip 192.168.0.1
</Directory>
Run Code Online (Sandbox Code Playgroud)
完全相反的情况也是如此,要限制所有并只允许子集使用以下内容:
<Directory /var/www/mysite.com/htdocs/public>
Require host example.com
Require ip 192.168.0.1
</Directory>
Run Code Online (Sandbox Code Playgroud)
Apache 2.4 访问控制文档中提供了更多信息。
关于您的问题(由于缺少添加评论的点而编辑了我自己的问题),您应该能够简单地设置一个 ErrorDocument 并将索引设置为 URL 路径:
<Directory /var/www/mysite.com/htdocs/public>
Require host example.com
Require ip 192.168.0.1
ErrorDocument 401 /index.html
</Directory>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
使用Order,Deny和allow指定谁可以访问您的虚拟主机或位置。
<VirtualHost *:80>
ServerName example.net
DocumentRoot /docroot
<Directory "/docroot">
Order Deny,Allow
Deny from all
Allow from 10.10.10.10
Allow from 10.10.11.0/24
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
谈到重定向,请考虑自定义错误页面。这更为普遍,因为每次未经授权的访问都会引发 403 错误,因此可以轻松评估。
我从来没有用 apache 做过这个,但是在 nginx 上使用这个策略。对于 apache 这样的事情应该做:
ErrorDocument 403 http://homepage.example.com
Run Code Online (Sandbox Code Playgroud)
使用 ErrorDocument 指令配置自定义错误文档,该指令可用于全局、虚拟主机或目录上下文。如果 AllowOverride 设置为 FileInfo,它可以在 .htaccess 文件中使用。(来自 apache 文档)
| 归档时间: |
|
| 查看次数: |
54959 次 |
| 最近记录: |