是否添加_重写_规则(..)是否只接受“index.php”作为重定向目标?

时间:2017-05-10 作者:ChrisBr

我想为位于我的子主题目录(wp-content/themes/t25child/UI/)中的自定义管理后端站点创建一个永久链接(chris-admin)。一直在玩弄Wordpress的重写规则来实现这一点,并注意到一个奇怪的行为:

add_rewrite_rule(
        \'^chris-admin/(.*)$\',
        \'wp-content/themes/t25child/UI/$1\',
        \'top\'
    );
wordpress甚至不接受这条规则。I tried around for hours and realized that wordpress only accepts rules which have index.php as redirect target. 下面的规则很有魅力。

add_rewrite_rule(
            \'^foo/([^/]*)/?\',
            \'index.php?pagename=$matches[1]&param=foo\',
            \'top\'
        );
有人能给我更多的见解吗?

非常感谢
-克里斯

1 个回复
SO网友:Milo

当你启用了永久链接时,有两种不同的重写系统在起作用。

第一个是Apache的mod_rewrite, 它基本上会将任何不需要物理目录或文件的请求发送到主WordPressindex.php 文件

第二个系统是WordPress的内部系统,负责将漂亮的永久链接转换为组件查询变量,因此可以查询数据库中请求的内容。

现在,您的问题是:是否添加了\\u rewrite\\u规则(…)只接受“index.php”作为重定向目标

不,您可以通过添加两种规则add_rewrite_rule. WordPress将查找index.php 并将该规则添加到内部规则中,或者将其添加到外部规则数组中。

那么,如果是这样的话,为什么你的规则不起作用呢?首先,验证规则是否未进入。htaccess文件。用于写入新规则。htaccess,需要刷新规则,但不是普通刷新。flush_rewrite_rules 接受单个布尔参数,默认情况下为false。将其设置为true将导致WordPress重新生成。htaccess文件,并应显示您的规则。

结束

相关推荐