【问题标题】:Wordpress : Url RewriteWordpress:网址重写
【发布时间】:2012-08-08 16:18:01
【问题描述】:

我正在尝试在 wordpress 中重写一个 url,以便我可以根据传递的变量提供动态内容。我有一个插件,需要将可变数据传递给它。目前我有:

http://xyzsite.com/page/?var1=something

这可以正常工作并传入 $_GET 变量。所以我的下一步是清理变量,使其看起来像

http://xyzsite.com/page/something

我已经进行了一些谷歌搜索,并访问了一些看起来很有希望的网站,但我无法让它们中的任何一个工作。根据我的阅读,我需要使用

add_rewrite_tag and add_rewrite_rule

阅读完文章后,我已将其添加到我的 functions.php 页面:

add_rewrite_tag('%var1%','([^&]+)');
add_rewrite_rule('^page/([^&]+)/?','index.php?p=1141&var1=$matches[1]','top');

当我导航到页面 http://xyzsite.com/page/something 时,我收到 404 错误。当我导航到http://xyzsite.com/page/?var1=something 时,它仍然可以正常工作。所以看起来我的重写没有注册或正常工作。

有人可以帮我实现上述重写。仅供参考,我的永久链接设置设置为帖子名称,如果这很重要的话。谢谢。

【问题讨论】:

  • 您检查过您的.htaccess 文件了吗?也许您没有.htaccess 文件,或者它被忽略了。如果我是你,我会先尝试进行正常的 url 重写(使用永久链接设置),如果可行,那么只有从 add_rewrite_tag()add_rewrite_rule() 开始。

标签: wordpress url-rewriting rewrite


【解决方案1】:

I̶'̶m̶̶n̶o̶t̶̶a̶̶r̶e̶g̶e̶x̶̶p̶r̶o̶,̶̶b̶u̶t̶̶I̶ ̶s̶u̶s̶p̶e̶c̶t̶̶a̶n̶̶i̶s̶s̶u̶e̶i̶s̶s̶u̶e̶i̶s̶s̶u̶e̶r̶i̶n̶̶p̶y̶o̶u̶r̶̶r̶e̶w̶r̶i̶t̶e̶p̶r̶u:

a̶d̶d̶_̶r̶e̶w̶r̶i̶t̶e̶_̶r̶u̶l̶e̶(̶'̶^̶p̶a̶g̶e̶/̶(̶[̶^̶&̶]̶+̶)̶/̶?̶'̶,̶'̶i̶n̶d̶e̶x̶.̶p̶h̶p̶?̶p̶=̶1̶1̶4̶1̶&̶v̶a̶r̶1̶=̶$̶m̶a̶t̶c̶h̶e̶s̶[̶1̶]̶'̶,̶'̶t̶o̶p̶'̶)̶;̶

̶ 请注意̶/̶̶......你加在̶e̶n̶d̶.̶因此,你应该访问您的网页以http:??̶/̶/̶x̶y̶z̶s̶i̶t̶e̶.̶c̶o̶m̶/页/某事/̶̶而不是̶x̶y̶z̶s̶i̶t̶e̶.̶c̶o̶m̶/页/东西。 ̶̶H̶a̶v̶e̶̶y̶o̶u̶̶t̶r̶i̶e̶d̶̶i̶f̶̶t̶h̶a̶t̶̶w̶o̶r̶k̶s̶?̶

正如 Gustavo Straube 在 cmets 中指出的那样,上面划掉的文字是错误的。请忽略该建议的解决方案。

我最后的唯一建议是尝试在最后一个 add_rewrite_rule 之后添加一个 flush_rules();,如 http://codex.wordpress.org/Rewrite_API/flush_rules 中所述。

请注意,您应该使用get_query_var('var_name') 访问您的查询变量,而不是尝试直接访问$_GET

【讨论】:

  • 正则表达式末尾的? 表示最后的斜杠(/)是可选的。所以它适用于page/something/page/something
  • 哎哟!你是对的,@GustavoStraube!这证实了我在任何方面都不是正则表达式专家,尽管至少我建议它 xD。我想现在是时候编辑了;)
猜你喜欢
  • 2014-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多