重写规则接受标记中的数字但不接受字母

时间:2016-11-27 作者:H. Grimm

RewriteRule只适用于数字,我目前正在尝试获取链接

实例com/subdir/StackExchange/

充当链接,例如附加网站标签:

实例com/细分?网站=StackExchange


我在中设置了一个重写规则。htaccess如下所示:

RewriteRule ^subdir/(.*)/$ subdir.php?website=$1 [L]
当我使用数字时(example.com/subdir/123/), echo $_GET["website"] 成功回显“123”。只要我用字母顺序(example.com/subdir/abc/) 确实如此not 工作

我如何改变这个?这是WordPress的问题吗?我已经将WordPress设置仪表板中的permalink选项设置为“Post name”。我也尝试了其他方法,但没有任何改变。

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

离开.htaccess 单独地您可以使用WordPressrewrite API 为了这个。

add_action( \'init\', function(){
    return add_rewrite_rule(
        \'subdir/([^/]+)/?$\', // ([^/]+) takes alphanumeric, while ([0-9]+) accepts digits
        \'index.php?pagename=subdir&website=$matches[1]\',
        \'top\'
    );
});

add_filter(\'query_vars\', function($v){ return array_merge(array(\'website\'),$v); });
首先确保subdir 在本例中,是有效的页段塞。将代码保存到子主题的函数文件或插件后,现在可以使用get_query_var(\'website\') 获取website 属性而不是使用$_GET 全球的

希望这有帮助。

相关推荐

Generate permalinks

我希望永久链接像youtube一样,由9位数的字母和数字生成我修改了这个代码add_filter( \'wp_unique_post_slug\', \'unique_slug_108286\', 10, 4 ); function unique_slug_108286( $slug) { $n=4; $slug = bin2hex(random_bytes($n)); //just an example return $slug; }&