如何将目录下所有路径的控制权传递给另一个 .htaccess 文件?

How do I pass control to another .htaccess file for all paths beneath a directory?

我的站点 ww.example.com 在其根目录中运行 WordPress,这意味着任何路径都将重定向到要评估的 WordPress 安装。我还在 www.example.com/path/to/wiki/ 下安装了 DokuWiki,它同样使用 .htaccess 在 www.example.com/path/to/wiki/wikipage.[=12 等路径下传送 wiki 页面=]

服务器上的文件结构将所有非 WordPress 内容存储在名为 content 的子目录中,因此 Dokuwiki 安装实际上位于 content/path/to/wiki/.

不幸的是,虽然 www.example.com/path/to/wiki/ 显示正确,但 www.example.com/path/to/wiki/wikipage 显然被传递回顶级 WordPress .htaccess 和 returns 404 错误。

我的 .htaccess 文件中需要什么才能使此设置生效?

示例 .htaccess 文件

顶级 WordPress .htaccess

# Rewrite to content directory
RewriteCond %{DOCUMENT_ROOT}/content/ -f [OR]
RewriteCond %{DOCUMENT_ROOT}/content/index.php -f [OR]
RewriteCond %{DOCUMENT_ROOT}/content/index.html -f
RewriteRule ^(.*)$ /content/ [L]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

DokuWiki.htaccess

RewriteEngine on

RewriteBase /path/to/wiki

RewriteRule ^_media/(.*)              lib/exe/fetch.php?media=  [QSA,L]
RewriteRule ^_detail/(.*)             lib/exe/detail.php?media=  [QSA,L]
RewriteRule ^_export/([^/]+)/(.*)     doku.php?do=export_&id=  [QSA,L]
RewriteRule ^$                        doku.php  [L]
RewriteCond %{REQUEST_FILENAME}       !-f
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteRule (.*)                      doku.php?id=  [QSA,L]

我认为您需要做的就是从根目录中的 .htaccess 文件中省略 wiki 和内容目录的路径,并将该路径包含在第一个重写规则中。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{DOCUMENT_ROOT}/content/ -f [OR]
RewriteCond %{DOCUMENT_ROOT}/content/index.php -f [OR]
RewriteCond %{DOCUMENT_ROOT}/content/index.html -f
RewriteRule ^(path/to/wiki/.+/?)$ /content/ [L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_URI} !^/(path/to/wiki|content)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress