Wordpress自定义Querystrings&漂亮的URL - 怎么样?

时间:2011-01-04 19:00:06

标签: php wordpress .htaccess query-string rewrite

我为一个新网站提供了一个完美的(目前为止)wordpress设置。漂亮的网址按预期工作。

我有一个动态页面,根据查询字符串加载内容:

/dynamic/?loc=england&code=uk 

我希望将此网址设为“漂亮”,但每次修改.htaccess时都不会进行任何更改。尝试了一切,谷歌搜索其他一切 - 最后的手段。如果我能得到以下工作,那么我会很高兴。

我需要让网址看起来像。

/dynamic/location/england/code/uk/

将此添加到任何.htaccess会破坏整个网站。

RewriteRule /dynamic/(.*)/(.*)/(.*)/(.*)/$ /dynamic?$1=$2&$3=$4

我缺少什么。

提前致谢

<磷>氮

1 个答案:

答案 0 :(得分:11)

不要将重写规则添加到.htaccess文件中。 WordPress会为您管理该文件,因此请尽量使用内置功能。<​​/ p>

WordPress实际上有一个标准的高级rewrite engine - 它可以像平台的其他部分一样可插拔。

然而,诀窍是与它合作。您需要注册您的RegEx,以便WordPress知道要匹配的字符串类型(即dynamic/location/(.*)/code/(.*) =&gt; /dynamic?$loc=$1&code=$2)。然后,您需要在后端设置页面和脚本来处理提交。

对于类似的示例,请查看我在WordPress Answers上解析自定义帖子类型的自定义网址时收到的答案。扩展这一点,您需要设置类似以下的代码(注意:未经测试!!!):

<?php
add_action('init', 'add_my_rewrite');

function add_my_rewrite() {
    global $wp_rewrite;
    $wp_rewrite->add_rule('location/([^/]+)/code/([^/]+)','index.php?loc=$matches[1]&code=$matches[2]','top');
    $wp_rewrite->flush_rules(false);  // This should really be done in a plugin activation
}

自动将重写结构添加到.htaccess文件中。