#wordpress #nginx #permalinks
Вопрос:
Застряло даже после того, как были просмотрены все постоянные ссылки на nginx WordPress, проблема, поднятая здесь.
У меня установлен WordPress в подкаталоге digitext-v1
. В корневом каталоге есть только файл phpinfo.
root --> /var/www
subdirectory --> /var/www/digitext-v1
Простые постоянные ссылки отлично работают с домашней страницей и всеми страницами. Довольно постоянные ссылки работают с домашней страницей, но дают 404 ошибки для всех остальных.
Мой файл conf приведен ниже. Имеет почти идентичную настройку (за исключением полного доменного имени, используемого в имени сервера) для моего живого сервера Nginx, где довольно постоянные ссылки работают отлично.
Можете ли вы помочь мне решить эту проблему, прежде чем я потеряю рассудок? Что-нибудь связано с доменным именем? Что я делаю не так??
server {
listen 80;
server_name digitextv1 192.168.11.8;
root /var/www/digitext-v1;
index index.php index.html index.htm;
# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
location / {
# Setting pretty permalinks in WordPress
# First attempt to serve request as file ($uri)
# or directory ($uri/).
try_files $uri $uri/ /index.php?$args;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ .php$ {
try_files $uri =404;
fastcgi_split_path_info ^(. .php)(/. )$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
ИЗМЕНИТЬ (несколько строк из журнала ошибок)
2021/08/31 16:05:48 [error] 3185#3185: *1406 FastCGI sent in stderr: "PHP message: PHP Warning: preg_match() expects parameter 2 to be string, array given in /var/www/digitext-v1/wp-content/plugins/popup-maker/includes/functions/popups/template.php on line 106PHP message: PHP Warning: preg_match() expects parameter 2 to be string, array given in /var/www/digitext-v1/wp-content/plugins/popup-maker/includes/functions/popups/template.php on line 106" while reading upstream, client: 192.168.11.41, server: 192.168.11.8, request: "GET /digitext-v1/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.11.8", referrer: "http://192.168.11.8/digitext-v1/wp-admin/options-permalink.php"
2021/08/31 16:06:28 [error] 3185#3185: *1426 FastCGI sent in stderr: "PHP message: PHP Warning: preg_match() expects parameter 2 to be string, array given in /var/www/digitext-v1/wp-content/plugins/popup-maker/includes/functions/popups/template.php on line 106" while reading upstream, client: 192.168.11.41, server: 192.168.11.8, request: "GET /digitext-v1/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.11.8"
2021/08/31 16:06:28 [error] 3185#3185: *1426 FastCGI sent in stderr: "PHP message: PHP Warning: preg_match() expects parameter 2 to be string, array given in /var/www/digitext-v1/wp-content/plugins/popup-maker/includes/functions/popups/template.php on line 106PHP message: PHP Warning: preg_match() expects parameter 2 to be string, array given in /var/www/digitext-v1/wp-content/plugins/popup-maker/includes/functions/popups/template.php on line 106" while reading upstream, client: 192.168.11.41, server: 192.168.11.8, request: "GET /digitext-v1/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.11.8"
2021/08/31 16:09:59 [error] 3185#3185: *1438 FastCGI sent in stderr: "PHP message: PHP Warning: preg_match() expects parameter 2 to be string, array given in /var/www/digitext-v1/wp-content/plugins/popup-maker/includes/functions/popups/template.php on line 106" while reading upstream, client: 192.168.11.41, server: 192.168.11.8, request: "GET /digitext-v1/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.11.8", referrer: "http://192.168.11.8/digitext-v1/wp-admin/options-permalink.php"
2021/08/31 16:09:59 [error] 3185#3185: *1438 FastCGI sent in stderr: "PHP message: PHP Warning: preg_match() expects parameter 2 to be string, array given in /var/www/digitext-v1/wp-content/plugins/popup-maker/includes/functions/popups/template.php on line 106PHP message: PHP Warning: preg_match() expects parameter 2 to be string, array given in /var/www/digitext-v1/wp-content/plugins/popup-maker/includes/functions/popups/template.php on line 106" while reading upstream, client: 192.168.11.41, server: 192.168.11.8, request: "GET /digitext-v1/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.11.8", referrer: "http://192.168.11.8/digitext-v1/wp-admin/options-permalink.php"
Комментарии:
1. Вы сбросили кэш браузера. Я не вижу ничего плохого в вашей конфигурации. Покажите записи журнала доступа и журнала ошибок для одного из этих 404 ответов.
2. Очистил кэш, попробовал приватные/инкогнито сеансы браузера. Вызывает ли это использование не полного доменного имени в имени сервера? Я ничего не вижу в 404 ответах в журнале ошибок (добавлено в вопрос).
3. У вас есть try_files внутри конфигурации вашего местоположения php.
4. Уже пробовал удалить try_files из расположения php. Это не решает проблему.
Ответ №1:
На этой неделе у меня была точно такая же проблема. Я даже зашел так далеко, что попытался сбросить WordPress, но безуспешно. Я загрузил свой .htacess
файл своему консультанту по хостингу Крису в easy.dns, и после некоторых переадресаций он удалил следующий код, чтобы решить проблему:
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
<Files *config.json*>
order allow,deny
deny from all
</Files>
Комментарии:
1. Я считаю, что эквивалентом правил перезаписи с веб-сервера Apache являются try_files на веб-сервере Nginx, который я использую. Я попробовал различные правила try_files в файле conf, но безуспешно.