将所有URL指向主页,但保留URL

时间:2021-08-13 作者:Cameron

我希望我的网站指向任何URL

website.com/about/
website.com/about/more/
转到主页。但是,我也希望在浏览器URL栏中维护URL。

我怎样才能做到这一点?

重定向可以通过以下方式实现

RewriteRule .* / [L,R=301]
我试过了

RewriteRule .* / [L,NC]
但是wordpress会显示页面/关于/而不是忽略URL,只显示主页。

2 个回复
SO网友:mukto90

将此代码添加到functions.php 您(子)主题的文件或作为插件-

add_action( \'init\', \'wpse_393237_add_any_endpoint\' );

function wpse_393237_add_any_endpoint() {
    add_rewrite_endpoint( \'.*\', EP_ALL );
}
请注意,如果看到404错误,可能需要刷新重写规则。(只需保存永久链接就可以了)

参考号:https://developer.wordpress.org/reference/functions/add_rewrite_endpoint/

SO网友:Nasif

我假设您计划替换Wordpress用于在每个URL处提供查询对象和正确模板的本机机制。我必须说,我不认为这样做有什么意义,因为你会失去Wordpress为让我们的生活更轻松所做的许多事情。您必须编写自己的代码来处理每个场景,例如404。也许Wordpress不是你想要的最理想的工具。

无论如何,如果我想这样做,我可能只会添加一个重写规则(通过插件,而不是在.htaccess上),将域中的任何URL指向索引:

function prefix_rewrite_rules(){

    add_rewrite_rule(
        \'.*\',
        \'index.php\',
        \'top\' //Places it as the prioritary rewrite rule
      );
  
}
  
add_action( \'init\', \'prefix_rewrite_rules\' );
正如另一个答案所指出的,您正在添加重写规则,因此必须访问Settings > Permalinks 页面,以便Wordpress刷新重写规则并包含此规则。(与另一个答案的评论相反,您只需访问页面。无需单击“保存更改”)。

相关推荐

HTAccess重定向-替换特殊字符

在我的previous post, 我问过如何301重定向所有.com/language/X URL到.com/members/?members_search=X 使用htaccess。谢天谢地,我得到了帮助,解决办法是RewriteRule ^language/(.*) /members/?members_search=$1 [R=301,L]我刚刚发现,我还需要将任何现有连字符转换为空格。我假设不会有超过2个连字符。测试用例http://example.com/language/american-en