Nginx WordPress довольно постоянные ссылки возвращают 404

#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, но безуспешно.