zoukankan      html  css  js  c++  java
  • Apache 在 htaccess 禁止访问 和 conf 中的 禁止访问 区别

    相信熟悉Web Server的人一定熟悉Apahce。相信熟悉Apahce的人一定知道URL Rewrite。Apache的mod_rewrite模块,可以帮助人们构造出各种各样美化后的URL。在Apache中使用URL Rewrite,可以有多种方式:一种是直接在httpd.conf中添加相应rewriterule(重写规则),另一种是在网站根目录下的.htaccess中添加rewriterule(重写规则)。但是,需要注意的是,在这两个文件中添加到URL重写规则略有不同。而这些不同,对于不熟悉的人来说,很可能会困扰许久。

    在Httpd.conf中:
    (1)Request URI的开头必须以斜线开始;
    (2)在寻找Cache文件的时候,必须在开头加上斜线;
    (3)在使用-f或者!-f的时候,必须在开头加上斜线。

    在.htaccess中,情况完全相反:
    (1)Request URI的开头不能有斜线;
    (2)在寻找Cache文件的时候,不能在开头加上斜线;
    (3)在使用-f或者!-f的时候,不能在开头加上斜线。

    简单而言,就是在httpd.conf中,重写前后的URL在使用绝对路径时需要添加斜线“/”,表示从网站根目录开始;而在.htaccess中,则不需要。以下两个简单的例子:

    httpd.conf
    RewriteRule ^/$ /cache/index.html [QSA]
    RewriteRule ^/([^.]+)$ /cache/$1.html [QSA]
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]

    .htaccess
    RewriteRule ^$ cache/index.html [QSA]
    RewriteRule ^([^.]+)$ cache/$1.html [QSA]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]

    或许还有更多的不同,大家也可以自己关注研究一下。

    例如 一个 写在 .htaccess 中的..

    <IfModule mod_rewrite.c>
    
      #禁止 所有访问....
      <Files ~ "^.(htaccess|htpasswd|info.php|(S)+.md|(S)+.sql)$">
      deny from all
      </Files>
    
      # 禁止访问 vendor....
      <Location /vendor>
          Deny from all
      </Location>
    
    
      Options +FollowSymlinks
      RewriteEngine On
    
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
    
    
    </IfModule>

    而写在 httpd.conf 中的.

    #ThinkPhp 安全 配置...
    
    <IfModule mod_rewrite.c>
    
      #禁止 所有访问....
      <Files ~ "^.(htaccess|htpasswd|info.php|(S)+.md|(S)+.sql)$">
      deny from all
      </Files>
    
      # 禁止访问 vendor.... composer 所在目录...
      <Location /vendor>
          Deny from all
      </Location>
    
      <Location /ThinkPhp>
          Deny from all
      </Location>
      
        
      Options +FollowSymlinks
      RewriteEngine On
    
      RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
      RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
      RewriteRule ^/(.*)$ index.php?/$1 [QSA,PT,L]
    
    </IfModule>

    在 写的 时候....出现了 bug .......暂时这样解决的..

    httpd.conf

    <IfModule mod_rewrite.c>
      #ThinkPhp 安全 配置...
      #禁止 所有访问....
      <Files ~ "^.(htaccess|htpasswd|info.php|(S)+.md|(S)+.sql)$">
      deny from all
      </Files>
    
      # 禁止访问 vendor.... composer 所在目录...
      <Location /vendor>
          Deny from all
      </Location>
    
      <Location /Thinkphp>
          Deny from all
      </Location>
      
    </IfModule>

    .htaccess

    <IfModule mod_rewrite.c>
    
      Options +FollowSymlinks
      RewriteEngine On
    
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
    
    </IfModule>
  • 相关阅读:
    CF981D
    CF883H
    Hdu 5884
    全排列
    二叉搜索树实现
    my.ini配置详解
    主元素问题
    排序算法(还需补充)
    迷宫问题(DFS,BFS)
    算法导论4--求最大和数组
  • 原文地址:https://www.cnblogs.com/whm-blog/p/8799155.html
Copyright © 2011-2022 走看看