如何限制用户访问子域

时间:2012-03-19 16:31:33

标签: php .htaccess

我希望就如何限制用户访问子域提供一些建议 只能使用有效的$_GET参数访问子域,例如www.domain.com/index.php?mykey=12345

我有一个控制这些密钥的Yii后端,但无法找到限制访问的好方法。我已经尝试了.htaccess规则将所有流量传递给index.php,然后在后端控制器中执行某些操作,如

file_get_contents('/var/www/'. $requested_file) ;
RewriteRule ^(.*)$ http://www.domain.com/index.php/$1

我知道明显的安全风险。它有点工作,但是在通过f_g_c().

传递所有流量时图像存在问题

希望有一种更简单的方法。

编辑:理想情况下,我不希望用户可以看到后端的存在。因此,为什么我没有使用明显简单的方法。

1 个答案:

答案 0 :(得分:0)

(假设你正在使用apache)

如果您希望它忽略图像,您可以为规则添加一些条件,使其看起来像这样:

RewriteCond %{REQUEST_URI} !\.(png|jpe?g|gif|js)$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/index.php/$1

这使得如果请求的URI具有特定扩展名,则不会应用该规则。此外,当您的RewriteRule具有以 http:// 开头的目标时,它本身会重定向浏览器,而不是在内部重写URI。这意味着当有人在浏览器的网址栏中输入http://www.domain.com/some-path时,会重定向,并且其地址栏现在显示为http://www.domain.com/index.php/some-path。如果你删除域位,它将被内部重写(条件是阻止循环):

RewriteCond %{REQUEST_URI} !^/index.php
RewriteRule ^(.*)$ /index.php/$1 [L]