根目录上的.htaccess mod_rewrite但需要它跳过所有其他目录

时间:2009-08-25 12:56:54

标签: apache .htaccess mod-rewrite

以下是目录大纲:

/
/css
/js
/admin
/config
/etc...

所以这就是我想要的:

/                      <-- Mod re-write for this directory only, skip the rest
/css
/js
/admin
/config
/etc...

.htaccess文件:

# Turn rewrite engine on
RewriteEngine On

# Set the base path
RewriteBase   /

#  now the rewriting rules
RewriteRule ^([0-9A-Za-z]+)/?$ /query.php?id=$1 [L]

想跳过除根目录以外的所有目录,我该怎么做?

2 个答案:

答案 0 :(得分:5)

另一种解决方案:将其中一条规则放在规则前面:

RewriteRule ^(css|js|admin|config|…)(/|$) - [L]

RewriteCond %{DOCUMENT_ROOT}$0 -d
RewriteRule ^[^/]+ - [L]

最后命名的规则适用于任何现有目录,但仅限于放置在服务器文档根目录中的.htaccess文件中。否则,您需要使用特定路径调整RewriteCond表达式%{DOCUMENT_ROOT}$0,例如%{DOCUMENT_ROOT}foo/bar/$0

答案 1 :(得分:0)

您是否尝试在“RewriteEngine Off”的每个子目录中放置.htaccess文件?

(也许这是serverfault.com的问题)