【问题标题】:Remove page name from friendly URL in Wordpress从 Wordpress 中的友好 URL 中删除页面名称
【发布时间】:2018-12-23 19:27:22
【问题描述】:

我在 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

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

【问题讨论】:

  • 这意味着您不想在 url 上添加页面名称 - 对吧?并让我知道 example.com/page_name/value1/value2 这个 url 中 value1 和 value2 的作用是什么??
  • 是的,我不希望页面名称出现在我的网址中。 Value1 和 value2 是我从数据库中获取并通过 url 传递到页面的两个数据库值。这些值用于城镇名称和城镇 ID。

标签: php wordpress .htaccess url url-rewriting


【解决方案1】:

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

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

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

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

【讨论】:

  • ok 试试看。非常感谢您的回复。手指交叉它的工作原理。
  • 早上好,乔,没有工作。仍在将 deltown 添加到网址中。我尝试将规则放置在 Wordpress 块的外部和内部,还尝试将链接更改为最后一页以将 deltown 排除在其中,但其中仍然包含 /deltown/。还有其他建议吗?
  • # BEGIN WordPress RewriteEngine On RewriteRule ^page_name/(.*) /$1 [R=302,L] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule 。 /index.php [L] # END WordPress 这是我在 .htaccess 中的 Wordpress 块
  • 好的,向乔道歉。我是个白痴。我没有更改 .htaccess 中的 page_name。我试过了,它确实从 url 中删除了 page_name。但是,它会弹出一个找不到页面的页面。再次,在 Wordpress htaccess 块内部和外部进行了尝试,结果相同。再次为浪费的回复道歉。关于如何解决这个问题的任何想法?另外如何将 .html 添加到 url 的末尾?
  • 可悲的是看起来那样,感谢您的所有帮助乔,非常感谢。我不会轮到你反对你的黑暗面,伙计。哈哈,加油。还有其他人对如何完成这项工作有任何想法吗?
猜你喜欢
  • 2013-09-16
  • 2013-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
  • 1970-01-01
  • 2021-04-07
  • 1970-01-01
相关资源
最近更新 更多