Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Wordpress自定义查询字符串&;漂亮的URL';如何?_Php_Wordpress_.htaccess_Query String_Rewrite - Fatal编程技术网

Php Wordpress自定义查询字符串&;漂亮的URL';如何?

Php Wordpress自定义查询字符串&;漂亮的URL';如何?,php,wordpress,.htaccess,query-string,rewrite,Php,Wordpress,.htaccess,Query String,Rewrite,我有一个非常好的(到目前为止)设置的wordpress的一个新网站。漂亮的URL按预期工作 我有一个动态页面,根据查询字符串加载内容: /dynamic/?loc=england&code=uk 我也想让这个URL变得“漂亮”,但每次我修改.htaccess时,都没有做任何更改。尝试了一切,谷歌搜索了一切——最后的手段。如果我能做到以下几点,我会很高兴的 我需要使URL看起来像 /dynamic/location/england/code/uk/ 将此添加到任何.htaccess会

我有一个非常好的(到目前为止)设置的wordpress的一个新网站。漂亮的URL按预期工作

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

/dynamic/?loc=england&code=uk 
我也想让这个URL变得“漂亮”,但每次我修改.htaccess时,都没有做任何更改。尝试了一切,谷歌搜索了一切——最后的手段。如果我能做到以下几点,我会很高兴的

我需要使URL看起来像

/dynamic/location/england/code/uk/
将此添加到任何.htaccess会破坏整个网站

RewriteRule /dynamic/(.*)/(.*)/(.*)/(.*)/$ /dynamic?$1=$2&$3=$4
我错过了什么

提前谢谢


N

不要将重写规则添加到
.htaccess
文件中。WordPress为您管理该文件,因此尽可能使用内置功能

WordPress实际上有一个比较先进的标准配置,它和平台的其他部分一样是可插拔的

不过,诀窍在于利用它。您需要注册您的正则表达式,以便WordPress知道要匹配哪些类型的字符串(即
dynamic/location/(.*)/code/(.*)
=>
/dynamic?$loc=$1&code=$2
)。然后需要在后端设置页面和脚本来处理提交

对于一个类似的例子,请看我收到的关于使用自定义post类型解析自定义URL的答案。要扩展此功能,您需要设置与以下类似的代码(注意:未测试!!!):


您是否尝试访问过
/dynamic/location/england/code/uk/
,或者只是在不漂亮的页面上刷新?另外,如果您想稍后分析加载的重写规则,我强烈推荐。回答不错,把这个问题扩大一点:有一种方法可以将:提前转换为感谢。我在让这些重写规则发挥作用时遇到了很多麻烦。您的正则表达式的
([^/]+)
格式适合我。谢谢
<?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
}