开发者

Apache .htaccess RewriteCond on Directory

I have the following directory structure in htdocs:

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

I'm trying to achieve clean URLs and basically want everything routed through index.php. My .htaccess file is as follows:开发者_开发百科

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

This works well in the sense that I can access legitimate files inside of foo/ and bar/ directly, however I'm also able to access files in priv/ which is what I want to disallow. How do I modify the above referenced line to basically say: "disable for files that are NOT in priv/"?


EDIT: I'm trying to avoid having to do "priv/.htaccess" -> "deny from all", and instead would like to process this in index.php like any other "pretty url" conversion.


You can add another RewriteCond with the condition just to match ^priv/ and combine it with OR:

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

Now this rule is applied if either the matched partial path starts with priv/ or if the request cannot be mapped onto an existing file.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜