Невозможно удалить 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, все было в порядке.