php - 使用wordpress重写url时如何避免重定向

标签 php wordpress redirect rewrite

我已经使用 WordPress 自己的函数设置了一个重写规则。 重写代码如下所示:

add_rewrite_rule('^testrule/(.+)?$', 'index.php?p=$matches[1]', 'top');

规则有效,只是每当我访问该 url 时,我都会被重定向,这使得 URL 发生变化,我不希望这种情况发生。

有什么建议吗?

最佳答案

你可能应该使用 add_permastructadd_rewrite_tag对我的情况有帮助的功能。虽然我的情况有点不同,但想法是相似的。

我有一个名为“guide”的自定义帖子类型,我需要它的自定义 URL(不同于自定义帖子名称),而且我在 URL 中使用了 post slugs,这是我的解决方案:

add_action('init', 'custom_permastruct_rewrite');
function custom_permastruct_rewrite() {
    global $wp_rewrite;

    $wp_rewrite->add_rewrite_tag("%guide_slug%", '([^/]+)', "post_type=guide&name=");
    $wp_rewrite->add_permastruct('my_rule', '/my_custom_name/%guide_slug%', false);
}

所以当你去地址时: http://example.com/my_custom_name/my_post_slug 在上面的 URL 下,它显示的内容来自: http://example.com/?post_type=guide&name=my_post_slug (不重定向到最后一个地址)

您可以根据您的需要调整“post_type=guide&name=”,例如您可以通过 id 查找帖子 - 因此将“p=”放在那里将显示来自:http://example.com/my_custom_name/24 的内容至 http://example.com/?p=24

关于php - 使用wordpress重写url时如何避免重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13858448/

相关文章:

php - 将 block 内的 block 与 pcre 匹配

PHP 在建立数据库连接时包含错误

php - 如何用 PHP 创建显示更多帖子?

google-chrome - HTTP 重定向到带有前导斜杠+反斜杠的 URL "/\example.com"在 Chrome/IE 上被认为是绝对的

.htaccess - 如何301将所有页面重定向到新域上的相同页面

php - 推送通知Jquery移动cordova应用程序android,重复的id

wordpress - 带有 UTF-8 的 Nginx URL

xml - 在 Wordpress 中使用 XSLT 解析 XML

wordpress - apache 中的段错误 11

php - 如果用户已经登录,如何重定向