例如,此代码
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有效。哪一个是正确的?
最合适的回答,由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$\'
因为这就是它要做的。