2013-02-20 65 views
0

我的网站通过包含来自'网页'目录(PHP)的页面来工作,并且我想禁止访问该目录中的文件。但是,当我将.htaccess文件放在那里说:deny from all时,它禁止访问所有文件,而不仅仅是一个请求来创建文件或使用样式表。rewritecond检查其脚本或客户端

我也尝试带给用户到另一个页面,当他们尝试看看那些文件,像这样:

RewriteCond %{THE_REQUEST} \.php[\ /?].*HTTP/ 
RewriteRule ^.*$ index.php?path=1 [QSA] 

RewriteCond %{THE_REQUEST} \.css[\ /?].*HTTP/ 
RewriteRule ^.*$ index.php?path=1 [QSA] 

RewriteCond %{THE_REQUEST} \.js[\ /?].*HTTP/ 
RewriteRule ^.*$ index.php?path=1 [QSA] 

而且这样的作品,它只是没有让样式表/ JS被加载。它确实让PHP文件包含在内,但没有被查看,这很好,所以我保留了这三个中的第三个。但是我的css文件包含有关我的文件结构的信息,我不想向黑客透露。所以,我不希望这些公开可用。

反正...我的问题是:
是否有RewriteCond我可以把在前面,如果最后两个,使它们只适用,如果请求是从客户端来了吗?

RewriteCond %{THE_REQUEST} IS_COMING_FROM_A_CLIENT_OR_BROWSER 
RewriteCond %{THE_REQUEST} \.css[\ /?].*HTTP/ 
RewriteRule ^.*$ index.php?path=1 [QSA] 

RewriteCond %{THE_REQUEST} IS_COMING_FROM_A_CLIENT_OR_BROWSER 
RewriteCond %{THE_REQUEST} \.js[\ /?].*HTTP/ 
RewriteRule ^.*$ index.php?path=1 [QSA] 

P.S.我宁愿不通过deny from all这样做,如果可能的话,因为我在共享主机上,他们可能不会那样。

+0

您如何知道何时来自客户? – 2013-02-20 03:43:41

+0

该网站仍在开发中。我知道,因为我把它输入到我的地址栏中。 – KFox 2013-02-20 03:48:06

+0

嗯,我想你知道,但我的问题是试图确定客户的请求和其他任何之间的差异。必须有一些东西来识别传入的URL,否则不可能用'RewriteCond'来过滤它们,而你的问题的答案将是NO。 – 2013-02-20 03:54:06

回答

0

会检查HTTP_REFERER是否为.php页面以外的其他内容适用于.js和.css文件内容?