Php 阻止直接URL输入,但授予本地主机访问权限

Php 阻止直接URL输入,但授予本地主机访问权限,php,apache,.htaccess,localhost,Php,Apache,.htaccess,Localhost,我正在尝试为我的网站编写一个.htaccess文件,这将阻止通过直接URL输入访问页面和图像,但将允许本地主机请求。到目前为止,我通过谷歌搜索找到了以下代码: RewriteEngine on RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com.*$ [NC] RewriteRule \.(php|css|js

我正在尝试为我的网站编写一个.htaccess文件,这将阻止通过直接URL输入访问页面和图像,但将允许本地主机请求。到目前为止,我通过谷歌搜索找到了以下代码:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com.*$ [NC] 
RewriteRule \.(php|css|js|jpg)$ - [F]
问题是我的网站图像受到了保护,但是当我想从父目录访问
index.php
(htaccess在我的子目录中,而不是父目录中)时,我会看到一个
403禁止
错误


现在我不太清楚这些线是什么意思,或者如何调整它们,所以我无法区分是非。有人能帮我说说这到底是怎么回事吗?谢谢

您的资产要么可访问,要么不可访问。如果不向公众提供服务,就不能向公众提供资产。你可能认为“来自本地主机”意味着某人已经“在你的网站上”;这是对网络运作方式的错误理解。每个资产都是通过URL从服务器请求的,所有请求都来自客户端。请求不来自“您的本地网站”


如果最终用户必须能够看到您的资产,那么他们必须能够通过URL访问这些资产,这意味着他们在“直接输入URL”时也能够看到这些资产。没有技术上的区别。

这是否意味着即使他们未登录,我也无法阻止他们访问某些资产?不,您可以单独授权每个请求,包括对资产文件的请求。但是,如果您使用PHP管理授权,则必须通过PHP代理所有请求。例如,
/getasset.php?file=foo.css