你的规则顺序不对。您的;自定义重定向“;需要位于.htaccess
WordPress前端控制器之前的文件,即# BEGIN WordPress
注释标记。
通过将其放置在WordPress代码块之后,它将只对直接映射到文件和目录的请求进行处理(包括文档根目录,但不包括/index.php
). (尽管您的自定义重定向实际上排除了根,但根据第一个条件)
<小时/>
UPDATE:
但是
RewriteCond %{REQUEST_URI} !^/path/page-accessible/
被忽略,因此页面也被重定向?
嗯,这不是;已忽略;。但是,请求随后在内部重写为index.php
(WP前端控制器),然后在第二次通过重写引擎时将其重定向(这使其看起来像是忽略了上述条件)。
您需要:
排除index.php
将另一个条件添加到规则中。例如:
RewriteCond %{REQUEST_URI} !^/index\\.php$
:
或,
确保该规则仅适用于来自客户端的直接请求,而不适用于稍后重写的内部重写请求。例如:
RewriteCond %{ENV:REDIRECT_STATUS} ^$
:
The
REDIRECT_STATUS
初始请求时环境变量为空,并设置为;200英寸;(与200 OK HTTP response status相同)在稍后的重写之后。