htaccess挑战:重写完美的网站结构安全

时间:2011-06-05 13:47:30

标签: php security .htaccess mod-rewrite directory

我正在开发一个新项目,我希望通过使用2级文件夹来提高安全性。 文件夹“Core”包含所有文件夹,包括“public”,它们是访问者可以访问的唯一文件夹。

关于我的webdir的简短介绍:

webdir
 | - .htaccess (core)
 | - classes
 | - functions
 | - public
      | - .htaccess (public)
      | - css
      | - files
          | - de
          | - en
          | - general
          | - nl
      | - images
      | - index.php
      | - js
      | - swf            
 | - template

有关您的信息:

  • 我的public / index.php文件通过[geturl]和[section]对文件所在的部分进行排序。请求“http://example.com/nl/openfile”指向:
      

    公共/ index.php的

  •   
  • 此文件读取$ _GET,并在[section]“nl”

    中看到[geturl]为“openfile”      
        

    public / index.php想要打开:“files / nl / openfile.php”

  •     
  • 这是它的工作方式,我希望它能够发挥作用!
  •     

我想用.htaccess实现的目标如下:

  

我当前的.htaccess文件:

  

.htaccess(核心)

<IfModule mod_rewrite.c>
RewriteEngine on
Options +FollowSymLinks
Options -Indexes 

RewriteCond %{HTTP_HOST} ^customer.com$ [NC]
RewriteRule ^(.*)$ http://www.customer.com/$1 [R=301,L]

RewriteRule ^company(.*)$ public/$1?section=company [L]

RewriteCond %{QUERY_STRING} (.*)
RewriteRule !(nl|en|de)/(.*).*  /webdir/nl/ [R=301,L]           # IF NO LANG ISSET THAN NL REDIRECT
RewriteRule ^error(.*).*        public/?getpage=error&%1 [PT,L]
RewriteRule ^(nl|en|de)/(.*).*  public/$2?section=$1&%1 [L]
</IfModule> 
  

.htaccess(公开)

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteCond %{QUERY_STRING} (.*)
    RewriteRule ^(.*).* index.php?geturl=$1&%1 [PT,L]
</IfModule>

我做错了什么以及如何改进.htaccess文件?

总结一下,我希望.htaccess能够做到以下几点:

1 个答案:

答案 0 :(得分:0)

您是否知道可以通过.htaccess内置deny from all来阻止整个目录?

通过这种方式,您可以使项目结构更简单,更便携。