在不更改URL的情况下将子页面重定向到父页面

时间:2015-07-04 作者:Simon H

我正在重写一个Wordpress网站,并计划将其中的一部分变成一个有棱角的应用程序。

该网站有一系列表单的子页面/recommendations/xxxxx, 并且需要为SEO目的维护这些URL。但我希望所有这些路线都能返回/recommendations 父页面同时保留URL的其余部分,以便Angle处理。

我想我需要使用add_rewrite_rule 但是已经卡住了,下面的方法不起作用。我需要wordpress显示推荐页面,即使随后有额外的url部分。

function recommendations_rewrite() {
  add_rewrite_rule(\'^recommendations\\/(.*)\\/?\', \'recommendations/\', \'top\');
}
add_action(\'init\', \'recommendations_rewrite\');
也就是说,这可能是完全错误的,因为我担心这最终会导致URL重写,这不是我想要的。

1 个回复
SO网友:webtoure

不,你在正确的轨道上add_rewrite_rule 涉及功能。生成的重写规则不发送303标头。

在这种情况下,问题在于您的代码很容易修复。

在这一行:

add_rewrite_rule(\'^recommendations\\/(.*)\\/?\', \'recommendations/\', \'top\');
您正在使WordPress输出修改的自定义.htaccess 具有如下恶劣重写规则的文件:

RewriteRule ^^recommendations\\/(.*)\\/? /recommendations/ [QSA,L]
这不仅是丑陋的正则表达式(你得到了一个双开头的行标记--^^) 但是生成的规则被破坏了,因为不是第二个^ 你应该有/.

解决方案很简单,需要找到recommendations 然后在中使用的页面/帖子add_rewrite_rule 功能如下:

add_rewrite_rule( \'^recommendations\\/(.*)\\/?\', "index.php?page_id={$page_id}", \'top\' );
其中{$page_id} 示例中的variable语句应该是所述IDadd_rewrite_rule 功能显示在WordPress Codex页面上。

刷新重写规则后,WordPress将提供如下URL:

http://www.example.com/recommendations/this/is/my/recommendation/
内容为

http://www.example.com/recommendations/

结束

相关推荐

Debugging WP routing

对于一些帖子,我看到404页,即使存在帖子,在WP中使用永久链接决定需要呈现什么对象的位置在哪里?谢谢