【问题标题】:Apache, .htaccess - Forbidding direct access to a file, but allow rewrites to go thereApache,.htaccess - 禁止直接访问文件,但允许重写到那里
【发布时间】:2009-03-11 00:51:39
【问题描述】:

我已经想出了如何写类似的东西

 www.test.com/test 

 www.test.com/test.php. 

这对于提供更简单的浏览体验和模糊 PHP 的使用很有用。但是,我想更进一步,禁止访问

 www.test.com/test.php 

完全,并且只允许通过

访问
 www.test.com/test 

为了防止人们通过简单地在 URL 中尝试来发现 PHP 的使用。

问题是如果我禁止访问

 www.test.com/test.php

然后

 www.test.com/test 

不再起作用,因为在重写后触发了禁止规则

 www.test.com/test.php 

完成了。

这可能吗?欢迎任何关于隐藏所用编程语言的替代建议。

【问题讨论】:

    标签: apache .htaccess url-rewriting


    【解决方案1】:

    您可以做的一件事是将 PHP 文件定位在文档根目录之外的某个位置并使用 AliasMatch 指令。如果您的 PHP 文件在 /var/www-php/www.test.com 中,请尝试

    AliasMatch ^(.*)$ /var/www-php/www.test.com/$1.php
    

    通常,当您想要禁止访问文件时(除非在特定条件下),将它们移到文档根目录之外是一种很好的方法。

    【讨论】:

      【解决方案2】:

      看看“最后一条规则”和“不继续”标志。

      http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html

      This is an example to block certain domains from hotlinking to your images.
      You could apply it to your case (the NC flags is important) :
      
          RewriteCond %{HTTP_REFERER} !^http://(www\.)?leech_site\.com/ [NC]
          RewriteRule \.(gif|jpg|png)$ - [F,L]
      

      【讨论】:

        猜你喜欢
        • 2022-10-14
        • 2016-10-24
        • 2011-09-26
        • 1970-01-01
        • 2014-01-31
        • 2020-05-04
        • 2011-08-11
        • 2013-07-31
        • 1970-01-01
        相关资源
        最近更新 更多