使用htaccess使某个目录下的php文件无法访问

时间:2014-09-23 14:04:40

标签: apache .htaccess mod-rewrite

我有一个.htaccess文件来重定向未命中现有文件或目录的所有请求,我的index.php文件会像这样解析:

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteBase /

  # Our app bootstrap file is index.php
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

这很好用,但是我还想添加另一个规则来防止在某个目录下直接访问php文件,将这些调用路由到同一个index.php文件。

像这样:

  

请求example.com/something.php - &gt;确定

     

请求example.com/themes/(anythinggoeshere)/somefile.php - &gt;不   好的,路由槽index.php

     

请求example.com/themes/(anythinggoeshere)/banner.png - &gt;确定

我正在寻找一种方法来制定这些&#34;规则&#34;在&#34;主题&#34;下工作。文件夹没有破坏我当前的文件夹。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用新规则来处理这些.php次请求:

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteBase /

  # handle .php requests via index.php
  RewriteCond %{REQUEST_URI} !^/themes/ [NC]
  RewriteRule ^[^/]+/.+?\.php$ index.php?/$1 [L,NC]

  # Our app bootstrap file is index.php
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>