Apache .htaccess RewriteCond on Directory

1 apache .htaccess mod-rewrite friendly-url

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

htdocs/
  .htaccess
  index.php
  foo/
  bar/
  priv/
Run Code Online (Sandbox Code Playgroud)

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

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f # <- referring to this next
RewriteRule .* index.php [L]
Run Code Online (Sandbox Code Playgroud)

这种运作良好,在我可以访问内部合法文件的意义foo/bar/直接,但我也是能够访问文件priv/这是我希望禁止什么.如何修改上面引用的行基本上说:"禁用不在的文件priv/"?


编辑:我试图避免必须做" priv/.htaccess" - >" deny from all",而是希望index.php像任何其他"漂亮的网址"转换一样处理这个.

Gum*_*mbo 6

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

RewriteCond $0 ^priv/ [OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php [L]
Run Code Online (Sandbox Code Playgroud)

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