Ich möchte etwas anderes als WordPress unter 'mydomain.com/login' installieren, aber WordPress leitet diesen Link '/ login' automatisch zu '/wp-login.php' um.
Wo kann ich diese Umleitung deaktivieren?
Wenn Sie sich canonical.php
ansehen, werden Sie feststellen, dass die wp_redirect_admin_locations
-Funktion sehr spät eingehakt wird-- mit der Priorität 1000 . Dies bedeutet, dass fast jede mit redirect_canonical
verknüpfte Funktion vor dieser ausgeführt wird. Entfernen Sie also bedingt wp_redirect_admin_locations
aus dem template_redirect
-Hook.
add_action(
'template_redirect',
function() {
$requ = untrailingslashit($_SERVER['REQUEST_URI']);
if (site_url('login','relative') === untrailingslashit( $_SERVER['REQUEST_URI'] )){
remove_action( 'template_redirect', 'wp_redirect_admin_locations', 1000 );
}
}
);
Diese Antwort basiert auf den Ergebnissen von "login" in Permalink-Weiterleitungen zu wp-login.php wp3.6
Wie dort bereits erwähnt, steht der entsprechende Code ganz am Ende in /wp-includes/canonical.php
Sie müssen die Standardeinstellung "wp_redirect_admin_locations" entfernen und sie durch eine leicht geänderte benutzerdefinierte Version ersetzen . Fügen Sie dies Ihrer function.php-Datei hinzu.
function custom_wp_redirect_admin_locations() {
global $wp_rewrite;
if ( ! ( is_404() && $wp_rewrite->using_permalinks() ) )
return;
$admins = array(
home_url( 'wp-admin', 'relative' ),
home_url( 'dashboard', 'relative' ),
home_url( 'admin', 'relative' ),
site_url( 'dashboard', 'relative' ),
site_url( 'admin', 'relative' ),
);
if ( in_array( untrailingslashit( $_SERVER['REQUEST_URI'] ), $admins ) ) {
wp_redirect( admin_url() );
exit;
}
$logins = array(
home_url( 'wp-login.php', 'relative' )
);
if ( in_array( untrailingslashit( $_SERVER['REQUEST_URI'] ), $logins ) ) {
wp_redirect( site_url( 'wp-login.php', 'login' ) );
exit;
}
}
function remove_default_login_redirect() {
remove_action('template_redirect', 'wp_redirect_admin_locations', 1000);
add_action( 'template_redirect', 'custom_wp_redirect_admin_locations', 1000 );
}
add_action('init','remove_default_login_redirect');
Beachten Sie auch, dass die Weiterleitung nur gilt, wenn unter/login nichts anderes angegeben ist. Sobald z.B. Wenn Sie eine Seite erstellen/sich anmelden, wird die Umleitung nicht mehr angewendet. (Siehe /wp-includes/canonical.php:553, wo dies geschieht.