2012-08-08 165 views
0

我想在wordpress中重写一个url,以便我可以根据传递的变量提供动态内容。我有一个插件需要传递给它的变量数据。目前,我有: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它仍然工作正常。所以看起来好像我的重写没有注册或工作正常。

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

+0

你有没有检查你的'.htaccess'文件?也许你没有'.htaccess'文件或被忽略。如果我是你,我会尝试首先执行正常的URL重写(使用固定链接设置),如果这个工作正常,那么只需从'add_rewrite_tag()'和'add_rewrite_rule()'开始。 – nalply 2012-08-08 19:24:58

回答

1

我可不是一个正则表达式PRO,̶但我怀疑一个问题,在你重写规则:̶

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̶/页/某事。你尝试是否可行?̶

上面的抚摸了文本是错误的,因为古斯塔沃Straube在评论中指出。请忽略该建议的解决方案。

我唯一的最后一个建议是尝试你最后add_rewrite_rule后加入flush_rules();,为http://codex.wordpress.org/Rewrite_API/flush_rules规定。

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

+0

我们可以在哪里添加代码..请告诉我 – Manju 2013-09-28 16:26:25

+0

正则表达式末尾的'?'表示最后一个斜杠('/')是可选的。所以它可以同时处理'page/something /'和'page/something'。 – 2015-09-15 16:09:40

+0

哎唷!你说得对,@GustavoStraube!这证实了我不是任何正则表达式专家,尽管至少我建议xD。我想现在该编辑了;) – Pere 2015-09-20 21:21:34