Verhindern Sie, dass WordPress die URL für eine Vorlage umschreibt

Variationen dieser Frage wurden gestellt, aber die Szenarien stimmen nicht mit meinen überein und trotz meiner Bemühungen war ich nicht in der Lage, die vorherigen Antworten auf eine funktionierende Lösung in meinem Anwendungsfall zu übernehmen.

Ich habe eine Seitenvorlage, in die eine Javascript-Anwendung eingebaut ist. Diese Anwendung verwendet den letzten Parameter in einer URL als Parameter für eine Ajax-Anforderung, die ausgeführt wird und dann Ergebnisse für erzeugt.

Aufgrund von SEO-Bedenken und Kundenanforderungen kann ich die Art und Weise, wie diese Anforderungssyntax funktioniert, nicht ändern oder ändern. Daher muss ich dafür sorgen, dass sie in WordPress funktioniert (die Seite wird von einer Ruby-Anwendung konvertiert).

Wenn der Client eine Anfrage an:

https://www.wordpresssite.com/service/testing-tool/domain.com 

Ich muss mit der Seite antworten, die mit der Vorlage erstellt wurde:

 https://www.wordpresssite.com/service/results 

Dieser Teil habe ich mit der folgenden Rewrite-Regel in .htaccess bearbeitet

 RewriteRule ^service/testing-tool/([a-z0-9.]+)$ /index.php?pagename=service/results [NC,L] 

Das Umschreiben funktioniert, WordPress ändert jedoch die URL im Browser zu

 https://www.wordpresssite.com/service/results 

Dies führt dazu, dass der JS fehlschlägt, weil der Domänenparameter fehlt, und er erfüllt auch nicht die zuvor genannten Anforderungen.

Nachdem ich hier einige Nachforschungen angestellt habe, handelt es sich um die Aktion redirect_canonical (). Daher habe ich versucht, sie aus der Vorlage zu entfernen:

 // Disable redirect_canonical() add_action( 'init', 'results_tweaks' ); function results_tweaks() { remove_action( 'template_redirect', 'redirect_canonical' ); } 

Das scheint es aber nicht zu tun. Wenn ich die WP-Dokumentation lese, vermute ich, dass die Aktion bereits beim Laden der Seite verarbeitet wird.

Gibt es eine andere Möglichkeit, diese Aktion speziell für diese Vorlage außer Kraft zu setzen, und keine anderen? Vielleicht ein anderer Weg als die Aktion zu entfernen?

Solutions Collecting From Web of "Verhindern Sie, dass WordPress die URL für eine Vorlage umschreibt"

Sie können eine interne Umschreibung anstelle von .htaccess verwenden:

 function wpd_service_rewrite() { add_rewrite_rule( '^service/testing-tool/([a-z0-9.]+)$', 'index.php?pagename=service/results', 'top' ); } add_action( 'init', 'wpd_service_rewrite' ); 

Vergessen Sie nicht, die Regeln neu zu schreiben, nachdem Sie sie hinzugefügt / geändert haben.

Sie können Ihr Problem möglicherweise lösen, indem Sie die Umschreibungsregel wie folgt ändern:

RewriteRule ^service/testing-tool/([a-z0-9.]+)/?$ /index.php?pagename=service/results&domain=$1 [NC,L]

Nun können Sie die Domain innerhalb von https://www.wordpresssite.com/service/results über PHP beziehen.

Beachten Sie, dass ich ‘/?’ zu deiner Regel, sonst sollte es nicht funktionieren.

Mit PHP würden Sie die Domain (fehlende Parameter) mit $_GET['domain'] .

Hoffe das hilft.