php - Wordpress 自定义查询字符串和漂亮的 URL - 如何?

标签 php wordpress .htaccess query-string rewrite

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

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

/dynamic/?loc=england&code=uk 

我也希望这个 URL 变得“漂亮”,但每次我修改 .htaccess 时都没有进行任何更改。尝试了一切并用谷歌搜索了其他一切——最后的手段。如果我能让以下内容工作,我会很高兴。

我需要使 URL 看起来像。

/dynamic/location/england/code/uk/

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

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

我错过了什么。

提前致谢

N

最佳答案

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

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

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

对于类似的示例,请查看我在 WordPress Answers 上收到的关于使用自定义帖子类型解析自定义 URL 的答案。 .对此进行扩展,您需要设置类似于以下的代码(注意: 未经测试!!!):

<?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 文件中。

关于php - Wordpress 自定义查询字符串和漂亮的 URL - 如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4597289/

相关文章:

php - Apache 显示 PHP 代码而不是执行它

php - 不是有效的惯性响应

php - Laravel 架构构建器,更新可为空的时间戳字段

javascript - 将 jQuery 日期选择器拆分为单独的日/月/年字段

Ajax 响应调用,404 未找到

php - 在不知道字段名称的情况下选择主键值

mysql - 获取 Woocommerce 客户订单语言

javascript - Wordpress 站点中的 AngularJS 路由

.htaccess - htaccess 删除 .php 扩展名,index.php 并添加尾部斜线

php - Symfony 从路由中删除前三个字符