- Status
- Warten auf Autor
- Gemeldet für
- WPML SEO 2.1.0
- Zugehöriges Plugin/Theme
- Yoast SEO
- Themen-Tags
- Compatibility
Übersicht über das Problem
Wenn Sie das Plugin Yoast SEO Pro verwenden, funktionieren RegEx-Weiterleitungsregeln in verschiedenen Sprachen nicht auf die gleiche Weise. Es gibt ein unterschiedliches Verhalten für die Standardsprache und die Sekundärsprache.
Wenn Sie beispielsweise eine Weiterleitungsregel wie ^/en/faq/(.+)$ nach /en/support/$1, erstellen, funktioniert diese möglicherweise nicht wie erwartet, wenn Sie versuchen, über http://example.com/en/faq/test/ darauf zuzugreifen.
Problemumgehung
Option 1
Als schnelle Problemumgehung können Sie verschiedene Regeln erstellen.
Gemäß dem ursprünglichen Beispiel:
- ^/faq/(.+)$ leitet weiter zu /support/$1
- ^faq/(.+)$ leitet weiter zu /en/support/$1
Option 2
Bitte stellen Sie sicher, dass Sie ein vollständiges Backup Ihrer Website haben, bevor Sie fortfahren.
- Öffnen Sie die Datei …/wp-content/plugins/wp-seo-multilingual/classes/class-wpml-wpseo-redirection.php.
- Suchen Sie nach Zeile 34.
- Ersetzen Sie diesen Code:
foreach ( $redirections as $redirection ) { if ( $redirection['origin'] === $url || '/' . $redirection['origin'] === $url ) { return true; } } - Durch:
foreach ( $redirections as $redirection ) { if($redirection['format'] == 'regex'){ // Ensure $url starts with /, if regex would need to check if string starts with this is needed. if(strpos($url, '/', 0) !== 0){ $url = '/' . $url; } // Lets use ~ as a regex delimiter instead of /, as we are matching a URL. preg_match('~' . $redirection['origin'] . '~', $url, $matches); if(count($matches) > 0){ return true; } } else if($redirection['origin'] === $url || '/' . $redirection['origin'] === $url){ return true; } }