Apache2配置问题:限制动态DNS仅可通过子目录访问网页服务
Apache2配置问题:限制动态DNS仅可通过子目录访问网页服务
我太懂这种摸不着头脑的感觉了!刚碰Apache配置的时候,各种标签的规则绕来绕去,搜半天还找不到精准的解决办法,简直头大😭 别担心,我给你捋清楚怎么改,保证一步到位。
首先你之前踩的坑是:Directory标签是用来配置服务器本地实际文件目录的权限,不能直接在里面写URL路径或者文档根,这就是为啥会报错。咱们换个思路,用Location控制URL路径的访问权限,再配合Alias把URL子目录映射到实际的文件目录,就能实现你要的效果了。
给你两种方案选:
方案一:根目录直接禁止访问(返回403)
把你的VirtualHost改成这样,记得替换/path/to/your/service/files为你实际存放服务文件的本地路径:
<VirtualHost *:80> ServerName blabla.dynamicdns.org # 禁止根路径(blabla.dynamicdns.org)的所有访问 <Location "/"> Require all denied </Location> # 允许/service子目录访问,同时映射到实际文件目录 Alias "/service" "/path/to/your/service/files" <Directory "/path/to/your/service/files"> # 这里可以根据需求调整选项,比如允许目录列表、跟随软链接等 Options Indexes FollowSymLinks MultiViews AllowOverride None Require all granted </Directory> </VirtualHost>
方案二:根目录自动跳转到/service子目录
如果你希望用户访问根路径时,自动跳转到/service,而不是直接返回403,可以用这个配置:
<VirtualHost *:80> ServerName blabla.dynamicdns.org # 访问根路径时,自动重定向到/service RedirectMatch ^/$ /service/ # 同样配置/service的文件映射和权限 Alias "/service" "/path/to/your/service/files" <Directory "/path/to/your/service/files"> Options Indexes FollowSymLinks MultiViews AllowOverride None Require all granted </Directory> </VirtualHost>
改完配置后,记得重启Apache服务生效:
sudo systemctl restart apache2
这样测试一下:访问blabla.dynamicdns.org要么返回403,要么自动跳转到blabla.dynamicdns.org/service,而后者能正常访问你的服务,完美符合你的需求~
备注:内容来源于stack exchange,提问作者DrDreadful
相关产品推荐
相关产品推荐

