web-dev-qa-db-de.com

Falsche wp-admin URL

Ich habe eine WordPress-Site neu installiert und sie hinter einem Reverse-Proxy mit der Site-URL konfiguriert - http://example.com/hello

Problem

Ich kann die Admin-Dashboard-Seite erreichen, aber ich kann nicht weiter gehen, da der Link zu http://example.com/wp-admin anstelle von http://example.com/hello/wp-admin wird. Wie könnte ich dieses seltsame Verhalten loswerden?

Details, die helfen könnten ...

  1. Ich bin mir ziemlich sicher, dass die WordPress-Adresse (URL) und die Site-Adresse (URL) als http://example.com/hello konfiguriert sind. Ich habe sogar die Datenbanktabelle wp_options überprüft.
  2. Wenn die Admin-Dashboard-Seite mit korrektem CSS aufgerufen wird, zeigt der Browser für eine halbe Sekunde den korrekten Link an und wechselt plötzlich zum falschen. Ich habe sogar das Netzwerkprotokoll in Chrome und Firefox überprüft. Die angeforderte URL lautet http://example.com/hello/wp-admin.
  3. Ich habe versucht, den .htaccess zu konfigurieren, aber kein Glück.

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /hello
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /hello/index.php [L]
    </IfModule>
    # END WordPress
    
1
Victor Wong

Schließlich fand ich den Grund für dieses seltsame Verhalten.

Es wird durch das in wp_admin_canonical_url() eingebettete JavaScript verursacht ( https://developer.wordpress.org/reference/functions/wp_admin_canonical_url/ )

Die URL wird durch diesen Code bestimmt

$_SERVER['HTTP_Host'] . $_SERVER['REQUEST_URI']

wobei letzterer wp-admin anstelle von hello/wp-admin zurückgibt.

Durch Ändern des Werts in $_SERVER['REQUEST_URI'] kann ich erfolgreich das richtige Verhalten im Admin-Dashboard erzielen. Trotzdem hoffe ich auf eine elegante Lösung, ohne den WordPress-Code zu berühren.

3
Victor Wong
add_filter('set_url_scheme', 'hacky_uri_fix', 10, 2);
function hacky_uri_fix($url, $scheme) {
    if ( $url === {{BAD ADMIN URL}} ) {
        $url = {{CORRECT ADMIN URL}}
    }
    return $url
}

sollte dies funktionieren, ersetzen Sie einfach die fehlerhafte URL, die Sie vermeiden möchten, durch die richtige. Ich bin mir sicher, dass es eine bessere Lösung dafür gibt, aber ich bin nicht besonders vertraut mit der Installation von Unterordnern, und dies sollte funktionieren, ohne den Kerncode zu berühren.

0
mrben522