- Вопрос или проблема
- Ответ или решение
- 1. Причины возникновения проблемы
- 1.1. Ограничения PHP
- 1.2. Неправильная настройка сервера Nginx
- 1.3. Проблемы с плагинами
- 2. Рекомендации по решению
- 2.1. Настройка параметров PHP
- 2.2. Корректировка конфигурации Nginx
- 2.3. Проверка плагинов
- 3. Дополнительные проверки
- 3.1. Логи ошибок
- 3.2. Проверка прав доступа
- Заключение
Вопрос или проблема
У меня есть экземпляр WordPress Multisite (субдомены), работающий на VPS, который, похоже, работает как ожидалось, за исключением того, что всякий раз, когда я добавляю пользователя или сайт, возвращается страница “Ссылка, по которой вы прошли, истекла”, и что-то происходит.
Я использую Nginx и php7.2-fpm.
Вот файл конфигурации:
server {
listen 80;
server_name www.domain.name domain.name *.domain.name;
return 301 https://www.domain.name$request_uri;
}
server {
listen 443 ssl;
server_name domain.name;
ssl_certificate /etc/letsencrypt/live/domain.name/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.name/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf; # управляется Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # управляется Certbot
return 301 https://www.domain.name$request_uri;
}
server {
listen 443 ssl;
server_name www.domain.name;
root /var/www/wordpress;
access_log /var/log/nginx/domain.name.access.log;
error_log /var/log/nginx/domain.name.error.log;
ssl_certificate /etc/letsencrypt/live/domain.name/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.name/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf; # управляется Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # управляется Certbot
include global/common.conf;
# WORDPRESS : Правила переписывания, перенаправляют всё через index.php и сохраняют добавленную строку запроса
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
# БЕЗОПАСНОСТЬ : Запретить все попытки доступа к PHP-файлам в директории загрузок
location ~* /(?:uploads|files)/.*\.php$ {
deny all;
}
# ТРЕБОВАНИЯ : Включить поддержку PHP
location ~ \.php$ {
# БЕЗОПАСНОСТЬ : Защита от нулевых эксплойтов
try_files $uri =404;
# ВКЛЮЧИТЬ : Включить PHP, слушать fpm sock
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.2-fpm-www.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# ПЛАГИНЫ : Включить правила переписывания для карты сайта Yoast SEO
rewrite ^/sitemap_index\.xml$ /index.php?sitemap=1 last;
rewrite ^/([^/]+?)-sitemap([0-9]+)?\.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;
}
global/commonf.conf:
# Глобальный файл конфигурации.
# ОСНОВНЫЕ : Настройка порта прослушивания Nginx
listen 80;
# ОСНОВНЫЕ : Файл по умолчанию для обслуживания. Если первый файл не найден,
index index.php index.html index.htm;
# ОСНОВНЫЕ : отсутствие логов для favicon
location = /favicon.ico {
log_not_found off;
access_log off;
}
# ОСНОВНЫЕ : robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# ОСНОВНЫЕ : Настройка страниц 404
error_page 404 /404.html;
# ОСНОВНЫЕ : Настройка страниц 50x
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www;
}
# БЕЗОПАСНОСТЬ : Запретить все попытки доступа к скрытым файлам .abcde
location ~ /\. {
deny all;
}
# ЭФФЕКТИВНОСТЬ : Установить заголовки истечения для статических файлов и отключить ведение журналов.
location ~* ^.+\.(js|css|swf|xml|txt|ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off; log_not_found off; expires 30d;
}
Я пытался найти решение в Интернете, но не смог ничего найти. Спасибо за помощь!
Я тоже ищу ответ на эту ошибку. Ближайшее, что я могу найти, это то, что это либо настройка, специфичная для плагина, либо это nonce, который не валидируется. Смотрите: Получение “Ссылка, по которой вы прошли, истекла” при добавлении пользовательского поста
.
Ответ или решение
Ошибка "Ссылка, по которой вы перешли, истекла" в WordPress Multisite (поддомены) может быть вызвана несколькими факторами, связанными с конфигурацией вашего сервера, ограничениями PHP или плагинами. Давайте разберемся в причинах этой проблемы и возможных путях ее решения.
1. Причины возникновения проблемы
1.1. Ограничения PHP
Ошибка часто связана с лимитами, установленными в файле конфигурации PHP (php.ini
). Обычно это происходит из-за того, что размер загружаемых файлов превышает установленное значение, или из-за недостаточного времени выполнения скрипта. Обратите внимание на следующие параметры:
upload_max_filesize
: максимальный размер загружаемого файла.post_max_size
: максимальный размер данных, которые могут быть переданы методом POST.max_execution_time
: максимальное время выполнения скрипта.
1.2. Неправильная настройка сервера Nginx
Ваша конфигурация Nginx должна быть настроена так, чтобы она принимала и правильно обрабатывала запросы на добавление сайтов и пользователей. Ошибки в конфигурации могут привести к неправильной обработке запросов.
1.3. Проблемы с плагинами
Некоторые плагины могут конфликтовать друг с другом или с ядром WordPress, что также может вызывать эту ошибку. В таком случае может быть полезно отключить все плагины и поочередно включать их, чтобы определить, какой из них вызывает проблему.
2. Рекомендации по решению
2.1. Настройка параметров PHP
Убедитесь, что в файле php.ini
установлены следующие параметры (примерные значения):
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
max_input_time = 300
После внесения изменений не забудьте перезапустить PHP-FPM и Nginx:
sudo systemctl restart php7.2-fpm
sudo systemctl restart nginx
2.2. Корректировка конфигурации Nginx
В вашей конфигурации Nginx убедитесь, что присутствуют необходимые директивы для обработки длинных запросов и кода.
Вы можете добавить следующее в блок server
:
client_max_body_size 64M; # Устанавливает максимальный размер тела запроса
2.3. Проверка плагинов
Отключите все плагины и проверьте, возникает ли ошибка. Если ошибка исчезла, включайте плагины по одному, чтобы найти конфликтующий. Также убедитесь, что все используемые плагины и тема обновлены до последних версий.
3. Дополнительные проверки
3.1. Логи ошибок
Регулярно проверяйте журналы ошибок Nginx и PHP-FPM для получения более точной информации о возникновение ошибки. Это может дать подсказку о том, что идет не так.
tail -f /var/log/nginx/domain.name.error.log
3.2. Проверка прав доступа
Убедитесь, что папки и файлы вашего WordPress имеют правильные права доступа. Рекомендуемые права:
- Для папок:
755
- Для файлов:
644
Заключение
Ошибка "Ссылка, по которой вы перешли, истекла" в WordPress может быть связана с различными аспектами, включая настройки сервера, лимиты PHP или конфликты плагинов. Внимательно проверьте конфигурацию вашего сервера и параметры PHP, чтобы убедиться, что они соответствуют требованиям WordPress, и осуществите необходимые изменения, чтобы устранить проблему. Не забывайте периодически обновлять плагины иテーマ, а также проверять логи сервера для обнаружения проблем. Это позволит к вашему сайту работать без сбоев и ошибок.