Apache .htaccess RewriteCond on Directory

时间:2011-01-06 06:12:05

标签: apache .htaccess mod-rewrite friendly-url

我在htdocs中有以下目录结构:

htdocs/
  .htaccess
  index.php
  foo/
  bar/
  priv/

我正在尝试实现干净的网址,并且基本上希望通过index.php路由所有内容。我的.htaccess文件如下:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f # <- referring to this next
RewriteRule .* index.php [L]

这可以直接访问foo/bar/内的合法文件,但是我也可以访问priv/中我想要的文件不允许。如何修改上面引用的行基本上说:“禁用不在priv/中的文件?”


编辑:我正在努力避免“priv/.htaccess” - &gt; “deny from all”,而是希望在index.php处理此处,就像任何其他“漂亮的网址”转换一样。

1 个答案:

答案 0 :(得分:6)

您可以添加另一个RewriteCond条件以匹配^priv/并将其与OR结合使用:

RewriteCond $0 ^priv/ [OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php [L]

如果匹配的部分路径以priv/ 开头,如果请求无法映射到现有文件,则应用此规则。