从Wordpress中的友好网址中删除页面名称

时间:2018-07-16 09:28:28

标签: php wordpress .htaccess url url-rewriting

我在Wordpress / Woocommerce内部创建了一个自定义页面,该页面使用网站模板。我在网站的根文件夹中有一个动态php页面,该页面会生成指向我直接创建的自定义Wordpress页面的链接。我想要的网址看起来像这样:

example.com/value1/value2.html

不是当前的Wordpress网址,而是:

example.com/page_name/value1/value2

因此,从本质上讲,我希望我的URL不在URL中显示page_name,而在URL的末尾带有.html。

在我的主题functions.php中,我添加了Wordpress Codex建议的两个功能。

我的功能是:

function custom_rewrite_tag() {
            add_rewrite_tag('%value1%', '([^&]+)');
            add_rewrite_tag('%value2%', '([^&]+)');
        }
        add_action('init', 'custom_rewrite_tag', 10, 0);

function custom_rewrite_rule() {
            add_rewrite_rule('^page_name/([^/]*)/([^/]*)/?','index.php?page_id=3090&value1=$matches[1]&value2=$matches[2]','top');
        }
        add_action('init', 'custom_rewrite_rule', 10, 0);

我没有在wp-admin中指定页面名称,但是在永久链接中确实有页面名称。在查看其他类似问题时,我确实看到有人说不可能从url中删除页面名称,因为Wordpress / Woocommerce需要此作为指向它需要显示的页面的参考点。这是真的?我已经尝试在Wordpress部分的内部和外部对.htaccess规则进行许多排列。

通过将重写规则放在Wordpress块之外,我已经设法重写了php页面,但是我对如何随心所欲更改Wordpress URL感到有些困惑。

我曾被一所前工作学院遗留了这个问题,这让我头疼,因为我必须找到解决办法。

**更新

在乔(非常感谢)帮助我之后,我现在遇到了这样的情况,我的最终网址看起来像这样:

https://example.com/page_name/value1/value2.html

但是我仍然需要/ page_name /从URL中删除。其他人对在Wordpress / Woocommerce中如何实现这一目标有何建议?

1 个答案:

答案 0 :(得分:0)

您可以使用page_name轻松地从网址中删除.htaccess

RewriteEngine On
RewriteRule ^page_name/(.*) /$1.html [R=301,L]

这将为您提供所需的URL example.com/value1/value2。您可以看到此工作here。这是通过301重定向完成的,该重定向是永久的,因此建议您在测试时将其更改为R=302

确保在测试之前 清除缓存。