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 dispatch.fcgi [QSA,L]

.htaccess
RewriteRule ^cache/index.html[QSA]RewriteRule([.]+) cache/1.html[QSA]RewriteCond 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>
复制代码

 

posted on   正义的伙伴!  阅读(338)  评论(0编辑  收藏  举报

编辑推荐:
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
阅读排行:
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
//增加一段JS脚本,为目录生成使用
点击右上角即可分享
微信分享提示