apache 禁止直接访问文件和目录,但只允许从主域访问

sh7euo9m  于 2023-01-09  发布在  Apache
关注(0)|答案(3)|浏览(199)

我有3个域(前端、后端、资产)托管在一台服务器上,特定目录/assets/上的所有资产文件都指向http://assets.mydomain.com/
我想阻止直接访问我的文件和目录的用户,并允许我的所有其他域都可以访问这些文件。我谷歌了很多发现一些解决方案使用.htaccess和设置deny all,但这是不工作,在我的情况下,因为不同的域,我猜。

ep6jt1vc

ep6jt1vc1#

Order中有关于此的示例
在以下示例中,允许访问www.example.com域中的所有主机example.org;所有其它主机被拒绝访问。

Order Deny,Allow
Deny from all
Allow from example.com

这将排除除您自己的域(example.com)之外的所有主机。
当您有权访问主配置时,还可以使用Directory将其限制为特定目录

<Directory /path/to/assets>
...
</Directory>

如果没有,请将OrderDenyAllow指令放入assets目录下的.htaccess文件中。

yshpjwxd

yshpjwxd2#

我解决了这个问题,阻止任何用户直接访问assets/*,在根目录下创建一个名为.htaccess的文件,并将以下代码放入其中:

RewriteEngine On

# If an existing asset or directory is requested go to it as it is
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]

# If the requested resource doesn't exist, use index.html
RewriteRule ^ /index.html

并在应用程序路由中创建到assets/* 的重定向

{path:'assets', redirectTo:'/', pathMatch:'prefix'}

我希望这能帮助我们

jgovgodb

jgovgodb3#

"这对我很有效"

SetEnvIf Referer "^http://yourdomain.com/" letitpass
Order Deny,Allow
Deny from all
Allow from env=letitpass

我将此代码放在根目录的.htaccess中,即http"//assets.yourdomain.com/assets/

相关问题