WPML
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;
    				}
    }

Alle bekannten Probleme →