很抱歉,如果之前已经问过/回答过这个问题,但我无法找到这个特定问题的答案。
如果我使用简单的重写规则创建 .htaccess 文件,则该规则有效。如果我在子目录中使用它自己的重写配置创建另一个 .htaccess 文件,则顶层的主 .htaccess 文件将停止被读取。我什至不需要创建任何规则。只需打开子目录上的重写引擎就会导致更高级别的重写停止工作。
我创建了一组包含两个文本文件的子目录:
[root@apachetest html]# cat test/1/test.txt
1
[root@apachetest html]# cat test/2/test.txt
2
以及一个 .htaccess 文件将 test/1/test.txt 重写为 test/2/test.txt
[root@apachetest html]# cat test/.htaccess
RewriteEngine on
RewriteRule 1/test.txt 2/test.txt [L]
这按预期工作。如果我请求 1/test.txt 我会得到 2/test.txt
[root@apachetest html]# curl localhost/test/1/test.txt
2
但是,如果我在 test/1/ 子目录中创建另一个 .htaccess 文件,则 test/.htaccess 文件将停止工作。
[root@apachetest html]# echo "RewriteEngine On" > test/1/.htaccess
[root@apachetest html]# curl localhost/test/1/test.txt
1
我已经尝试了所有的 RewriteOptions;/test/.htaccess 和 /test/1/.htaccess 中的 Inherit、InheritBefore、InheritDown、InheritDownBefore 和 IgnoreInherit 但如果 /test/1/.htaccess,我无法让 /test/.htaccess RewriteRule 工作里面有任何重写配置。
我需要能够将 RewriteRules 放入子目录中,而不影响顶级目录中的 RewriteRules。谁能告诉我我错过了什么?