首页 > 解决方案 > 在新的 Wordpress 安装下重定向旧的子目录页面请求

问题描述

我们的网站最近从一个基本的 php/mysql 应用程序迁移到了 Wordpress。在旧应用程序中,我们在一个子目录中有内容,该子目录现在位于一个新域上。

下面的例子。

旧链接:

https://example.com/vibes/vibin.php?showsomething=abcd&whatever=whatever

应该重定向到:

https://vibes.com/vibin.php?showsomething=abcd&whatever=whatever

复杂的角度是旧链接现在是 Wordpress 安装。在 wordpress 的默认.htaccess文件中,我看到以下内容:

# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
        RewriteBase /
        RewriteRule ^index\.php$ - [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /index.php [L]
</IfModule>

我在 WP 管理区域四处逛逛,但看不到如何安全地编辑该文件。

是否有其他方法可以解决这个问题,或者我们的用户是否只需要以旧方式更新书签?

标签: wordpresshttp-redirect

解决方案


进程

您可以使用 ftp 手动编辑 .htaccess 文件并添加所需的重定向。先做好备份。如果您想避免 ftp 访问,那么我完全不建议更新 .htaccess 文件,因为如果您破坏某些内容,您将需要该访问权限。

您可以使用 WordPress 插件来编辑 .htaccess 文件以避免 ftp 访问,例如“Htaccess 文件编辑器”。(在尝试此操作之前,请确保您具有 ftp 访问权限,以便在备份中断时将其恢复原位。)

如果您想重定向所有请求,那么我会在这里查看https://serverfault.com/a/280067以了解如何使用 .htacess 创建重定向,该重定向将重定向到另一个域并保留查询字符串。也许它看起来像这样。

RewriteCond %{HTTP_HOST} !^vibes\.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/?(.*) http://www.vibes.com/$1 [L,R,NE,QSA]

如果您只想将请求重定向到旧站点上的某个 URL,那么我会在这里查看https://stackoverflow.com/a/8416095/222564。也许它看起来像这样。

RewriteBase /
RewriteRule ^vibes/(.*)$ http://www.vibes.com/$1 [L,R=301,QSA]

插件

由于旧网站运行的是 WordPress,因此您可以使用插件来重定向请求,而不是编辑 .htacess。有各种可用的“重定向”插件。例如,“404 解决方案”有一个选项可以根据正则表达式将请求重定向到另一个域并保留查询字符串。我维护该插件,所以我知道它可以做到这一点,但我不知道其他插件。

例如,您将重定向 from/vibes/(.*)http://www.vibes.com/$1


推荐阅读