如何为Apache2网站的/acp目录禁用.htaccess Rewrite规则
解决Apache .htaccess中排除/acp路径不应用重写规则的问题
你之前仅修改最后一条规则的方式无效,原因是前面的gallery和board规则仍会对请求生效,且单条规则的排除无法覆盖所有场景。最稳妥的方案是在所有重写规则前添加一条跳过规则,直接让以/acp开头的请求不执行后续任何重写逻辑。
修改后的完整配置如下:
RewriteEngine On # 跳过所有/acp开头的请求,不执行后续重写规则 RewriteRule ^acp(/.*)?$ - [L] RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^gallery/(.*)$ gallery/index.php?$1 [L,QSA] RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^board/(.*)$ board/index.php?$1 [L,QSA] RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^(.*)$ index.php?$1 [L,QSA]
规则说明
RewriteRule ^acp(/.*)?$ - [L]:匹配所有以/acp开头的路径(包括/acp本身和/acp/xxx这类子路径),-表示不做任何重写操作,[L]标记会终止后续所有重写规则的执行,确保/acp相关请求完全跳过所有自定义重写逻辑。
如果/acp是服务器上真实存在的目录或文件,原有的!-d和!-f条件本来会跳过这类请求,但上述跳过规则能覆盖虚拟路径等更复杂的场景,确保所有/acp路径都不受重写规则影响。
内容的提问来源于stack exchange,提问作者Joshua2504
相关产品推荐
相关产品推荐

