2016-12-29 1 views
1

Ich habe ein ernstes Problem mit einer meiner WP-Sites. Plaese werfen Sie einen Blick auf meine Rewrite-Regeln:WP: wie add_rewrite_rule() ohne Erstellen einer zusätzlichen Seiten

function set_rewrite_rules(){ 
    add_rewrite_tag('%posttype%', '([^&]+)'); 
    add_rewrite_rule('^expertise[/]([^/]+)[/]([^/]+)[/]page[/]([0-9]+)[/]?', 
    'index.php?expertise=$matches[1]&posttype=$matches[2]&paged=$matches[3]', 
    'top'); 
    add_rewrite_rule('^expertise[/]([^/]*)[/]articles[/]([^/]+)[/]?', 
    'index.php?article=$matches[2]', 
    'top'); 
    add_rewrite_rule('^expertise[/]([^/]*)[/]verdicts[/]([^/]+)[/]?', 
    'index.php?verdict=$matches[2]', 
    'top'); 
    add_rewrite_rule('^expertise[/]([^/]*)[/]laws[/]([^/]+)[/]?', 
    'index.php?law=$matches[2]', 
    'top'); 
    add_rewrite_rule('^expertise[/]([^/]*)[/]prosecutions[/]([^/]+)[/]?', 
    'index.php?prosecution=$matches[2]', 
    'top'); 
    add_rewrite_rule('^expertise[/]([^/]+)[/]([^/]+)[/]?', 
    'index.php?expertise=$matches[1]&posttype=$matches[2]', 
    'top'); 
} 
add_action('init', 'set_rewrite_rules'); 

Es funktioniert gut, aber es creats viele zusätzliche Seiten wie:

/expertise/[EX-NAME]/page/2/page/4/page/3/page/2/page/4/page/2/ 

die normalerweise sollte ein 404 aber jetzt diese Seiten Werke zurückkehren & sieht wie eine normale gültige Seite aus. Erwartetes Ergebnis: Die Seitennummerierung sollte nur mit einer einmaligen Übereinstimmung funktionieren. zum Beispiel:

/expertise/[EX-NAME]/page/2/ 

Alles funktioniert wie erwartet, während die set_rewrite_rules geführt wird kommentiert.

+1

Versuchen Sie, am Ende der ersten Rewrite-Regel ein '$' hinzuzufügen und sehen Sie, was passiert. – revo

+0

@revo hat es versucht. zusätzliche Seiten sind noch verfügbar mit: 'add_rewrite_rule ('^ expertise [/] ([^ /] +) [/] ([^ /] +) [/] Seite [/] ([0-9] +) [/] ? $ ',' index.php? expertise = $ Übereinstimmungen [1] & posttype = $ Übereinstimmungen [2] & paged = $ Übereinstimmungen [3] ',' top '); ' –

+0

Was passiert, wenn Sie diese spezifische Neuschreibung entfernen? Regel? – revo

Antwort

0

Versucht, $ zur letzten Regel hinzuzufügen & sieht aus wie keine zusätzlichen Seiten.

Siehe Beispiel:

function set_rewrite_rules(){ 
    add_rewrite_tag('%posttype%', '([^&]+)'); 
    add_rewrite_rule('^expertise[/]([^/]+)[/]([^/]+)[/]page[/]([0-9]+)[/]?', 
    'index.php?expertise=$matches[1]&posttype=$matches[2]&paged=$matches[3]', 
    'top'); 
    add_rewrite_rule('^expertise[/]([^/]*)[/]articles[/]([^/]+)[/]?', 
    'index.php?article=$matches[2]', 
    'top'); 
    add_rewrite_rule('^expertise[/]([^/]*)[/]verdicts[/]([^/]+)[/]?', 
    'index.php?verdict=$matches[2]', 
    'top'); 
    add_rewrite_rule('^expertise[/]([^/]*)[/]laws[/]([^/]+)[/]?', 
    'index.php?law=$matches[2]', 
    'top'); 
    add_rewrite_rule('^expertise[/]([^/]*)[/]prosecutions[/]([^/]+)[/]?', 
    'index.php?prosecution=$matches[2]', 
    'top'); 
    add_rewrite_rule('^expertise[/]([^/]+)[/]([^/]+)[/]?$', 
    'index.php?expertise=$matches[1]&posttype=$matches[2]', 
    'top'); 
} 
add_action('init', 'set_rewrite_rules'); 

Dank @revo für die Hilfe!

+0

Wenn ein Kommentar zur Antwort hilft. Bitten Sie diesen Benutzer, eine Antwort zu erstellen, damit Sie den Punkt für den richtigen Benutzer belohnen können. Jetzt können Sie wirklich nicht – janw

Verwandte Themen