【发布时间】:2023-03-27 17:48:01
【问题描述】:
我想将进入 wordpress 站点的某些 URL 重定向到文档根目录之外的另一个目录。似乎最简单的方法是让 wordpress 成为一个子目录,但是我怎样才能让它的重写规则重定向到这个子目录呢?
这些是 apache 配置中的标准规则(不是 .htaccess)
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
由于现在我想在目录中添加wordpress,所以我将其更改如下
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
但我得到了
[perdir /] internal redirect with /wordpress/index.php [INTERNAL REDIRECT]
相反。为什么?我最初尝试在规则中手动添加“wordpress”,但显然 %{REQUEST_FILENAME} 存储初始名称而不是重写的名称。
【问题讨论】:
-
澄清一下,您已经实际移动了 WordPress(以及所有相关文件,包括 URL 中的
.htaccess) into that subdirectory? And updated the necessary WP config to includewordpress`?如果您已经这样做了,那么您无需更改“标准”.htaccess文件。“在 apache 配置中(不是 .htaccess)”——“在 apache 配置中”到底是什么意思——具体在哪里?这些特定指令在 目录之外不起作用> 上下文。 -
这是另一种方法,但我想看看它是否可以通过纯重写规则来完成,并且可以。 Apache 配置是指httpd.conf 中的虚拟主机配置。当我使用目录上下文时,我在下面的答案中使用的指令会生成重定向循环,因此我将其删除。 (RewriteBase 需要它,但我最终没有走那条路)。
-
“纯重写规则”——这些都是“纯重写规则”吗?如果您的意思是不使用
RewriteBase,那么在目录 上下文中RewriteBase是您可以使用的工具(如果需要),没有理由避免使用它。 “Apache 配置是指 httpd.conf 中的虚拟主机配置” - 如果直接在<VirtualHost>容器中使用,上述指令将“中断” - 它们需要在<Directory>容器中,在<VirtualHost>内- 这会改变 context.
标签: wordpress apache .htaccess