Назад | Перейти на главную страницу

Невозможно удалить 301 редирект для wordpress wp-admin на nginx

Невозможно удалить 301 редирект для wordpress wp-admin на nginx. Домашняя страница в порядке

Я перепробовала почти все

Выход для локона –I http://www.example.com/wp-admin 301 человек переехал постоянно. Я использую облачный интерфейс и файл по умолчанию для моего сервера ниже

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    # Add index.php to the list if you are using PHP
    index index.php index.html index.htm index.nginx-debian.html;

    server_name www.example.com;

    location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            #try_files $uri $uri/ =404;
            try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
            include snippets/fastcgi-php.conf;

    #       # With php7.0-cgi alone:
    #       fastcgi_pass 127.0.0.1:9000;
    #       # With php7.0-fpm:
            fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
            deny all;
    }
}

Это перенаправление на TLS, т.е. Location: https://www.example.com/wp-admin. Это делается не в конфигурации сервера, а в function auth_redirect(), нашел в wp-includes/pluggable.php строки 997-1064, более конкретно строки 1012-1020:

// If https is required and request is http, redirect
if ( $secure && !is_ssl() && false !== strpos($_SERVER['REQUEST_URI'], 'wp-admin') ) {
    if ( 0 === strpos( $_SERVER['REQUEST_URI'], 'http' ) ) {
        wp_redirect( set_url_scheme( $_SERVER['REQUEST_URI'], 'https' ) );
        exit();
    } else {
        wp_redirect( 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
        exit();
    }
}

Это контролируется force_ssl_admin(), включается добавлением define('FORCE_SSL_ADMIN', true); постоянный wp-config.php. Если константа не определена, по умолчанию используется false если только siteurl имеет https:// (видеть wp_ssl_constants() в wp-includes/default-constants.php строки 284-304).

Номера строк исходного кода взяты из текущей версии WordPress 4.9.8 и могут измениться в будущих версиях.

Перенаправления страниц администратора и входа на TLS не опасны, и вы они должны быть включены для безопасности. В настоящее время рекомендуется защищать все сайты с помощью TLS, т.е. https://www.example.com/ как siteurl.

После долгого чтения похоже, что проблема заключается в конфликте между корневым каталогом nginx по умолчанию, который, как я обнаружил, является / usr / share / nginx, и тем, который был изменен в соответствии с корневой директивой site-available / default, которая читает / var / www / html.

Nginx искал файл /usr/share/nginx/html/wp-admin/index.html, которого не существовало. Я создал папку wp-admin с index.html в / usr / share / nginx, которая остановила перенаправление 301. С тех пор я удалил оба, и 301 не вернулся, но затем привел к ошибке 404, которую я исправил, вернувшись к исходному сайту / доступному по умолчанию, который пришел с установкой nginx. Как только я перезагрузил nginx, все было в порядке.