WordPress重写规则不需要^?

时间:2020-07-05 作者:cooldude101

例如,此代码

class My_Sitemap
{
    public static function install()
    {
        add_filter(\'rewrite_rules_array\', array(__CLASS__, \'rewriteRules\'), 1, 1);
        global $wp_rewrite;
        $wp_rewrite->flush_rules(false);
    }

    public static function rewriteRules($wpRules)
    {
        $rules = array(
            \'sitemap\\.xml$\' => \'index.php?pagename=my-sitemap\',
        );
        return array_merge($rules, $wpRules);
    }

    public static function parseRequest($wp)
    {
        if (!isset($wp->query_vars[\'pagename\'])) {
            return true;
        }
        if ($wp->query_vars[\'pagename\'] !== \'minimal-xml-sitemap\') {
            return true;
        }
        self::outputXML();
    }

    public static function outputXML()
    {
        echo \'hello\';
    }
}

register_activation_hook(__FILE__, array(\'My_Sitemap\', \'install\'));
add_action(\'parse_request\', array(\'My_Sitemap\', \'parseRequest\'));
重写规则是sitemap\\.xml$, 难道不是吗^sitemap\\.xml$? 如果我去我的网站。com/asitemap。xml它不工作,但mysite。com/sitemap。xml有效。哪一个是正确的?

1 个回复
最合适的回答,由SO网友:mozboz 整理而成

我刚做了一个测试,似乎是重写规则imply ^ 如果您没有指定它。在我的测试中,我发现:

rule \'foo\' matched url \'foo\'
rule \'^foo\' matched url \'foo\'
rule \'foo\' did not match url \'afoo\'
rule \'^foo\' did not much url \'afoo\'
rule \'.*foo\' matched url \'afoo\'
因此,我必须在开头显式添加一些匹配的正则表达式,以便它在开头匹配额外的字符。”“foo”与“afoo”不匹配

就我个人而言,我喜欢具体一些,所以我认为你是对的\'^sitemap\\.xml$\' 因为这就是它要做的。

相关推荐

将WWW重定向到非WWW HTAccess

它被问了无数次,但在我的Wordpress中仍然不起作用。我想将所有内容重定向到https://website.com.已使用的当前代码:<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} ^www\\. [NC] RewriteCond %{HTTP_HOST} ^(?:www\\.)