限制对特定引荐来源的目录的访问

时间:2016-05-03 18:58:26

标签: .htaccess

我知道可能会有类似(但不完全相同)的问题,但没有一个解决方案对我有效。

我有一个网站:xy.com/public。我有另一个名为xy.com/private的网站。 xy.com/public可供公众使用。但是,我不希望公众直接访问xy.com/private(即我不希望人们在他们的浏览器中键入URL并访问xy.com/private的内容)。

相反,我希望能够通过xy.com/public访问xy.com/private。或者,换句话说,xy.com/public中的页面将调用xy.com/private中的页面,并以这种方式将其内容提供给请求它的人。我很确定必须有一种方法可以使用.htaccess。我在Centos OS的VPS中使用apache。我花了很多时间试图找到解决方案,但无济于事。我猜测将使用重写引擎。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

将以下代码放在私有.htaccess文件中,这样就没有人能够浏览任何private / file.php或private / image.png(请参阅以下代码行RewriteRule。(php | gif | jpg | png)$ - [F]所以你可以添加你想要的任何东西,如js或css等。 现在它是带有扩展jpg,png或gif以及php文件的图像)

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?xy.com [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?xy.com.*$ [NC] 
RewriteRule \.(php|gif|jpg|png)$ - [F]

但只有当他们按下来自公共或任何其他目录的链接时,他们才能浏览。

  

注意:

如果某人尝试请求private / wrongpage.php,除非您通过多种方式处理它,否则会出错,例如ErrorDocument 404 /path/to/error/page.php

  

更新

如果您需要所有请求仅来自公共目录,您可以使用以下内容修改上述代码,但仍在私人目录.htaccess文件中:

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?xy.com/public [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?xy.com/public.*$ [NC] 
RewriteRule \.(php|gif|jpg|png)$ - [F]