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

时间:2016-05-10 13:39:15

标签: wordpress apache .htaccess mod-rewrite dokuwiki

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

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

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

我的.htaccess文件中需要什么才能使此设置正常工作?

示例.htaccess文件

顶级WordPress .htaccess

# Rewrite to content directory
RewriteCond %{DOCUMENT_ROOT}/content/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/content/$1index.php -f [OR]
RewriteCond %{DOCUMENT_ROOT}/content/$1index.html -f
RewriteRule ^(.*)$ /content/$1 [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=$1  [QSA,L]
RewriteRule ^_detail/(.*)             lib/exe/detail.php?media=$1  [QSA,L]
RewriteRule ^_export/([^/]+)/(.*)     doku.php?do=export_$1&id=$2  [QSA,L]
RewriteRule ^$                        doku.php  [L]
RewriteCond %{REQUEST_FILENAME}       !-f
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteRule (.*)                      doku.php?id=$1  [QSA,L]

1 个答案:

答案 0 :(得分:0)

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

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

RewriteCond %{DOCUMENT_ROOT}/content/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/content/$1index.php -f [OR]
RewriteCond %{DOCUMENT_ROOT}/content/$1index.html -f
RewriteRule ^(path/to/wiki/.+/?)$ /content/$1 [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