Apache重写/index异常,但不是第二个和更深层的索引?

Apache重写/index异常,但不是第二个和更深层的索引?,apache,mod-rewrite,Apache,Mod Rewrite,我想对……有个例外 http://localhost/ …在重写下面任何目录的索引时 http://localhost/directory1/ http://localhost/directory2/ 通过在下面有一个空项(字符之间的第一个项(|在第三行),它会为所有索引创建一个异常,因此如何使用此.htaccess副本使异常不应用于localhost/本身 http://localhost/.htaccess RewriteEngine on RewriteRule ^(|directory2

我想对……有个例外

http://localhost/

…在重写下面任何目录的索引时

http://localhost/directory1/

http://localhost/directory2/

通过在下面有一个空项(字符之间的第一个项(|在第三行),它会为所有索引创建一个异常,因此如何使用此.htaccess副本使异常不应用于localhost/本身

http://localhost/.htaccess

RewriteEngine on
RewriteRule ^(|directory2/|directory2/) - [L]
RewriteRule !\.(css|xhtml|xml|zip)$ rewrite.php
…而且我不能干扰服务器配置。此外,此问题与重定向无关。

尝试使用来匹配目录,然后将重写规则应用于匹配的任何内容

编辑:另外,我认为您的!行可能会导致一些问题。我使用进行了测试,并调整了建议的修复方案,使其如下所示:

RewriteCond %{REQUEST_URI} ^/(directory1|directory2)/
RewriteRule .(css|xhtml|xml|zip)$ - [L]
RewriteRule .* rewrite.php

这通常是我匹配事物的方式——如果您有一些不想处理的事物,请将它们与[L]指令匹配并停止处理规则,然后继续处理其他任何事物。

此规则对根索引例外。因为没有任何事物介于^(^=以开头)和$($=以结尾)请求的URI与http://localhost/完全匹配。拥有[space]index.php(或将扩展名更改为所需的扩展名)将强制文件重写为自身。它似乎不会循环

RewriteRule ^$ index.php [QSA]

我试着重写cond%{REQUEST\u URI}!=“/”和RewriteCond%{REQUEST\u URI}!=”,但没有成功。我只是稍微修改了一下我的答案,希望能有所帮助。你很接近,它帮助我实现了这个目标:RewriteCond%{REQUEST\u URI}!*/(管理员博客论坛)so+1并接受,谢谢!