【问题标题】:Redirecting a /?p=xxx wordpress URL重定向 /?p=xxx wordpress URL
【发布时间】:2010-12-21 15:02:21
【问题描述】:

我需要将格式如下的单个 Wordpress URL 重定向:www.bluewidgets.com/?p=123 到另一个域上的干净 URL。我怎样才能通过.htaccess 做到这一点?我见过的所有教程都说我需要在查询字符串之前指定 URL 的另一部分,例如 index.php,但我的 URL 没有 - 它只是域,然后是查询字符串。

【问题讨论】:

  • 你所说的“干净的网址”是什么意思? www.bluewidgets.com/?p=123 必须重定向到 www.redwidgets.com/?p=123?或者 www.bluewidgets.com/?p=123 到 www.redwidgets.com/post/really-cool-widgets?不同域的帖子是否具有相同的 id 或相同的 url slug?你想重定向所有旧的 id 还是只重定向特定的?:
  • 我的意思是 www.bluewidgets.com/?p=123 到 www.redwidgets.com/post/really-cool-widgets 不同的域不再具有任何相同的元素。我只想重定向一个特定的 URL。

标签: wordpress .htaccess mod-rewrite http-status-code-301


【解决方案1】:

你不能先添加到 header.php 中吗:

<?php
if ($_GET['p'] == '123') {
    header('Location:http://www.yourotherdomain.com');
exit;
}
?>

我过去做过类似的事情。它可能不漂亮,但它很有效——我很想听听更有经验的 PHP 人说这是否是一种合法的策略。

【讨论】:

  • 嗨,我尝试将您提供的代码放入 header.php 的各个部分(在所有代码之上,在 部分上方,在 部分中,但我收到此错误(当然,根据我添加它的位置显示不同的行):解析错误:语法错误,第 2 行 /home1/bluewidgets/public_html/foobar/wp-content/themes/scribblings/header.php 中的意外 T_IF 我不介意完全使用此方法而不是 htaccess,只是在使其正常工作时遇到了一些麻烦。
  • 将第一行更改为 然后尝试。
  • 效果很好,谢谢! :D 感谢所有帮助过的人。
【解决方案2】:

试试这个规则:

RewriteCond %{QUERY_STRING} =p=123
RewriteRule ^$ /foo/bar? [L,R=301]

或者使用REQUEST_URI

RewriteCond %{REQUEST_URI} =/?p=123
RewriteRule ^$ /foo/bar? [L,R=301]

请注意,RewriteCond 模式以 = 开头,用于标识字典比较而不是正则表达式测试。此外,substitution 中的空查询(用…? 表示)将删除最初请求的查询。

【讨论】:

    【解决方案3】:

    wordpress 不是已经内置了 URL 美化功能吗?只是出于好奇,您为什么需要这样做。

    除此之外,是的,您提到的是如何通过 htaccess 进行操作。您是否在使用此方法时遇到问题?

    【讨论】:

    • 问题是我有两个域:domain1.com 和 domain2.com。我最初在 domain1.com 上拥有我的博客,然后我的网站的实际名称可供注册,所以我注册了 domain2.com 并将其作为我的主域并将 domain1.com 停在它上面。那个特定的帖子 - domain1.com/?p=xxx - 上面有一个付费帖子,并且 URL 必须保留在那里,我才能按月付费。但是,我现在想将 domain1.com 和 domain2.com 分开,并将 domain1.com 用于其他目的。所以我需要实现从 domain1 发布 URL 到 domain2 发布 URL 的重定向
    • 我提到的似乎要求 URL 有另一个位,例如 /index.php?p=xxxx - 如您所见,我的 URL 没有 index.php 位,只是/?p=xxxx 所以在尝试该方法时它没有奏效。
    【解决方案4】:

    标准 301 重定向采用以下格式(并且位于 domain1):

    Redirect 301 /filename.php http://domain2.com/filename.php
    

    但我只是尝试使用默认永久链接,但没有成功。

    在 domain1 上,您可以使用标准的 wordpress 重写块重写 URL,然后立即将其重定向到 domain2。乱七八糟,但它可能会起作用。

    【讨论】:

    • 我尝试了您之前发布的代码,它似乎不适用于查询字符串。不知道如何按照您的意思重写 URL:S
    • 你在 domain1 有 wordpress 吗?或者其他使用 mod_rewrite 并可能与 wordpress 冲突的东西?
    • domain1 和 domain2 都在运行两个不同的 Wordpress 安装。
    • 最简单的方法是使用wordpress.org/extend/plugins/redirection 而不是进入您的.htaccess 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 2011-05-30
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多