Php True正则表达式以捕获wordpress子页面永久链接
我有wordpress regex'(get/(.*)),它非常适合以下地址Php True正则表达式以捕获wordpress子页面永久链接,php,regex,wordpress,mod-rewrite,preg-match,Php,Regex,Wordpress,Mod Rewrite,Preg Match,我有wordpress regex'(get/(.*)),它非常适合以下地址 http://localhost/akasia/get/gulets/for/sale/ 我的问题是此代码与以下url不匹配 http://localhost/akasia/var/var/get/gulets/for/sale/ http://localhost/akasia/var/get/gulets/for/sale/var/ http://localhost/akasia/var/var/get/gul
http://localhost/akasia/get/gulets/for/sale/
我的问题是此代码与以下url不匹配
http://localhost/akasia/var/var/get/gulets/for/sale/
http://localhost/akasia/var/get/gulets/for/sale/var/
http://localhost/akasia/var/var/get/gulets/for/sale/var/var
http://localhost/akasia/n..0/var/var/get/gulets/for/sale/var/var/n..0
Regex buddy与之匹配,但wordpress Regex不匹配
“.(get/()?)”、“(?+)(get/()?)”和各种正则表达式都不起作用
我不明白它为什么不起作用
注意:使用$matches[]检索匹配URL的值时,捕获组数据从1开始,而不是从0开始
这是我的密码
add_filter('rewrite_rules_array', 'create_rewrite_rule');
function create_rewrite_rule($rules){
$newrules = array(
'(get/(.*)?)' => 'index.php?&get=$matches[1]',
//'for/([^/]+)?' => 'index.php?for=$matches[1]',
);
return $newrules + $rules;
}
function get_rewrite_rules(){
// return get_option('rewrite_rules');
global $wp_rewrite;
return $wp_rewrite->rewrite_rules();
}
add_filter('query_vars', 'create_query_vars');
function create_query_vars($vars){
$vars[] = 'get';
$vars[] = 'for';
return $vars;
}
function get_flush_rewrite_rules() {
$rules = $GLOBALS['wp_rewrite']->wp_rewrite_rules();
if (!isset($rules['(get/(.*)?)'])){ // must be the same rule as in create_rewrite_rule($wp_rewrite)
press('Regex kurallari guncellendi. Bu normal degil. Admin\'i haberdar edin.');
flush_rewrite_rules();
}
}
add_filter('init', 'get_flush_rewrite_rules');
更新数天+数小时后,我发现regex buddy是真的。以下筛选器不工作
add_filter('rewrite_rules_array', 'create_rewrite_rule');
function create_rewrite_rule($rules){
$newrules = array(
'(get/(.*)?)' => 'index.php?get=$matches[1]',
);
return $newrules + $rules;
}
add_filter('rewrite_rules_array', 'create_rewrite_rule');
function create_rewrite_rule($rules){
$newrules = array(
'(get/(.*)?)' => 'index.php?get=$matches[1]',
);
return $newrules + $rules;
}
你应该用这个来代替它
function create_rewrite_rule() {
add_rewrite_rule('(.*(get/(.*)?))', 'index.php?get=$matches[1]', 'top');
}
add_action('init', 'create_rewrite_rule', 10, 0);
function create_rewrite_rule() {
add_rewrite_rule('(.*(get/(.*)?))', 'index.php?get=$matches[1]', 'top');
}
add_action('init', 'create_rewrite_rule', 10, 0);
您的代码应该是这样的
function create_rewrite_rule() {
add_rewrite_rule('(.*(get/(.*)?))', 'index.php?get=$matches[1]', 'top');
}
add_action('init', 'create_rewrite_rule', 10, 0);
function get_rewrite_rules(){
// return get_option('rewrite_rules');
global $wp_rewrite;
return $wp_rewrite->rewrite_rules();
}
add_filter('query_vars', 'create_query_vars');
function create_query_vars($vars){
$vars[] = 'get';
$vars[] = 'for';
return $vars;
}
function get_flush_rewrite_rules() {
$rules = $GLOBALS['wp_rewrite']->wp_rewrite_rules();
if (!isset($rules['--(get/(.*)?)'])){ // must be the same rule as in create_rewrite_rule($wp_rewrite)
flush_rewrite_rules();
}
}
add_filter('init', 'get_flush_rewrite_rules');
function create_rewrite_rule() {
add_rewrite_rule('(.*(get/(.*)?))', 'index.php?get=$matches[1]', 'top');
}
add_action('init', 'create_rewrite_rule', 10, 0);
function get_rewrite_rules(){
// return get_option('rewrite_rules');
global $wp_rewrite;
return $wp_rewrite->rewrite_rules();
}
add_filter('query_vars', 'create_query_vars');
function create_query_vars($vars){
$vars[] = 'get';
$vars[] = 'for';
return $vars;
}
function get_flush_rewrite_rules() {
$rules = $GLOBALS['wp_rewrite']->wp_rewrite_rules();
if (!isset($rules['--(get/(.*)?)'])){ // must be the same rule as in create_rewrite_rule($wp_rewrite)
flush_rewrite_rules();
}
}
add_filter('init', 'get_flush_rewrite_rules');
希望帮助一些人
注意:获取\u刷新\u重写\u规则可能不是必需的。我去看看。一些测试表明,添加重写规则就是这样做的。如果我没有忘记的话,我会做更多的测试并写到这里。更新在几天多的时间后,我发现regex buddy是真的。以下筛选器不工作
add_filter('rewrite_rules_array', 'create_rewrite_rule');
function create_rewrite_rule($rules){
$newrules = array(
'(get/(.*)?)' => 'index.php?get=$matches[1]',
);
return $newrules + $rules;
}
add_filter('rewrite_rules_array', 'create_rewrite_rule');
function create_rewrite_rule($rules){
$newrules = array(
'(get/(.*)?)' => 'index.php?get=$matches[1]',
);
return $newrules + $rules;
}
你应该用这个来代替它
function create_rewrite_rule() {
add_rewrite_rule('(.*(get/(.*)?))', 'index.php?get=$matches[1]', 'top');
}
add_action('init', 'create_rewrite_rule', 10, 0);
function create_rewrite_rule() {
add_rewrite_rule('(.*(get/(.*)?))', 'index.php?get=$matches[1]', 'top');
}
add_action('init', 'create_rewrite_rule', 10, 0);
您的代码应该是这样的
function create_rewrite_rule() {
add_rewrite_rule('(.*(get/(.*)?))', 'index.php?get=$matches[1]', 'top');
}
add_action('init', 'create_rewrite_rule', 10, 0);
function get_rewrite_rules(){
// return get_option('rewrite_rules');
global $wp_rewrite;
return $wp_rewrite->rewrite_rules();
}
add_filter('query_vars', 'create_query_vars');
function create_query_vars($vars){
$vars[] = 'get';
$vars[] = 'for';
return $vars;
}
function get_flush_rewrite_rules() {
$rules = $GLOBALS['wp_rewrite']->wp_rewrite_rules();
if (!isset($rules['--(get/(.*)?)'])){ // must be the same rule as in create_rewrite_rule($wp_rewrite)
flush_rewrite_rules();
}
}
add_filter('init', 'get_flush_rewrite_rules');
function create_rewrite_rule() {
add_rewrite_rule('(.*(get/(.*)?))', 'index.php?get=$matches[1]', 'top');
}
add_action('init', 'create_rewrite_rule', 10, 0);
function get_rewrite_rules(){
// return get_option('rewrite_rules');
global $wp_rewrite;
return $wp_rewrite->rewrite_rules();
}
add_filter('query_vars', 'create_query_vars');
function create_query_vars($vars){
$vars[] = 'get';
$vars[] = 'for';
return $vars;
}
function get_flush_rewrite_rules() {
$rules = $GLOBALS['wp_rewrite']->wp_rewrite_rules();
if (!isset($rules['--(get/(.*)?)'])){ // must be the same rule as in create_rewrite_rule($wp_rewrite)
flush_rewrite_rules();
}
}
add_filter('init', 'get_flush_rewrite_rules');
希望帮助一些人
注意:获取\u刷新\u重写\u规则可能不是必需的。我去看看。一些测试表明,添加重写规则就是这样做的。如果我没有忘记的话,我会做更多的测试并写到这里。我假设akasia是你的wordpress目录。然后看起来正则表达式一开始就需要“get/”。如果我是对的,你可以用。*@AlexanderTaubenkorb akasia是我的wp目录,这是真的。但正则表达式不起作用。