【发布时间】:2014-11-08 16:34:43
【问题描述】:
我有一个 WordPress 安装,它正在替换旧网站。旧(Movable Type)网站有.html 文件,我想将它们重定向到新的等价物。这可以将/foo.html 重定向到/foo/:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule (.+)\.html$ /$1/ [L,R=301]
</IfModule>
但我也想排除一些其他目录,这些目录包含来自 WordPress 的旧 .html 文件 - 以便仍然可以像以前一样访问它们。我从其他答案中看到,我可以将下面标记的行添加到 WordPress 的 .htaccess 语句中,以从重写中排除目录:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# NEW LINE:
RewriteCond %{REQUEST_URI} !^/(mydirectory|mydirectory/.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
我有两个问题:
如果我注释掉第一个块,新行仍然不允许我访问,比如
/mydirectory/foo.html- WP 重定向到/missing/。我不知道为什么。我不确定如何组合这两组规则。即,
/mydirectory/中的任何内容都可以像以前一样访问,但所有其他以.html结尾的 URL 都应重写为/filename/,而 WP 的其他内容则正常工作。
【问题讨论】:
标签: wordpress apache .htaccess mod-rewrite redirect