у меня вопрос: каковы условия - которые вы считаете наиболее важными!?
Кстати; относительно среды PHP и условия: я предполагаю, что мы обеспечиваем, чтобы на сервере работала последняя поддерживаемая версия PHP для оптимальной производительности и безопасности.
Что касается перезаписи URL-адресов (Постоянные ссылки): CPT используют правила перезаписи WordPress для создания чистых, удобных для пользователя URL-адресов (постоянных ссылок), например, на my_site.com.
Условие: Веб-сервер (обычно Apache или Nginx) должен быть настроен для правильной обработки файла WordPress .htaccess или эквивалентных правил перезаписи. Если страницы CPT возвращаются 404, это часто указывает на проблему с перезаписью конфигурации на стороне сервера, которую обычно можно исправить, просто повторно сохранив настройки постоянной ссылки в области администрирования WordPress.
Что делать, если созданные URL-адреса https://www.my_site.com/cpt/addsmart/
https://www.my_site.com/cpt/ недоступны (!)!
ну поверьте мне: поведение забавное.
оба URL-адреса https://www.my_site.com/cpt/addsmart/
https://www.my_site.com/cpt/ оба выдают отказ в доступе
кстати: я написал следующее в файл .htaccess
Код: Выделить всё
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
обновление: посмотрите еще немного информации
и посмотрите это - что я добавил в .htaccess
Код: Выделить всё
Permalink-Struktur: Plain
WordPress does not create any Rewrite-Regeln
all the "pretty URLs" run over:
mod_rewrite (Apache) or
Nginx Rewrite Rules
but well my server Server says:
❌ „these URLs could not be executed“
вывод: PHP и Apache построены правильно, mod_rewrite, похоже, загружен
Команда настройки:
Код: Выделить всё
'./configure' '--prefix=/usr/local/php-8.4.14' '--with-apxs2=/usr/local/apache/bin/apxs' '--without-snmp' '--disable-ipv6' '--enable-sigchild' '--with-pear' '--with-mysql-sock=/var/run/mysql/mysql.sock' '--enable-calendar' '--with-zlib' '--enable-mbstring' '--with-pdo-mysql' '--with-mysqli' '--disable-mbregex' '--with-openssl=/usr/local/' '--enable-shmop' '--enable-sysvshm' '--with-pdo-sqlite' '--enable-gd' '--with-mm=/usr/local/mm/' 'OPENSSL_CFLAGS=-I/usr/local/include' 'OPENSSL_LIBS=-L/usr/local/lib -lssl -lcrypto' '--with-openssl-argon2' '--enable-static=NO' '--with-curl=/usr/local/' 'CFLAGS= -O2 -march=native -Wno-erro 'Код: Выделить всё
'http_core mod_authn_file mod_authn_dbm mod_authn_socache mod_authz_host mod_authz_groupfile mod_authz_user mod_authz_core mod_access_compat mod_auth_basic mod_auth_digest mod_socache_shmcb mod_watchdog mod_ratelimit mod_reqtimeout mod_filter mod_deflate mod_mime mod_log_config mod_env mod_mime_magic mod_expires mod_headers mod_usertrack mod_setenvif mod_version mod_session mod_session_cookie mod_ssl prefork mod_unixd mod_autoindex mod_dir mod_alias mod_rewrite mod_php'Код: Выделить всё
mod_rewrite ✔ loadedКод: Выделить всё
WordPress Plain-Links ✔ running wellКод: Выделить всё
Pretty Permalinks ❌ 403Код: Выделить всё
Theme - tt3 tt4 tt5 - each time the same behaviorКод: Выделить всё
Plugins - they do not play a vital roleКод: Выделить всё
❌ Apache blocks .htaccess or the Pathsслучай 1: AllowOverride None
Apache не читает .htaccess, хотя файл существует.
пример - проблематично:
Код: Выделить всё
AllowOverride None
случай 2: ограничительные или -правила
для примера
Код: Выделить всё
Код: Выделить всё
Require all deniedКод: Выделить всё
Код: Выделить всё
Require all deniedи – еще немного информации:
Почему отображается ?p=123 (важный момент – !!)
Код: Выделить всё
?p=123:Код: Выделить всё
no RewriteКод: Выделить всё
/my_slug/:а. может ли этот путь быть «Истинным» - может ли этот путь существовать?
b. есть ли какие-нибудь правила?
разрешено ли .htaccess здесь "делать что-нибудь"?
ну - мне нужно это исправить - мне обязательно нужно это "исправить", и мне нужно избавиться от этих проблем
Диагноз (окончательный):
Ваш сервер блокирует все «URL-адреса на основе путей» (/foo, /edih/, /sample-post/) на уровне Apache до того, как WordPress примет меры.
Код: Выделить всё
+------------------------+-----------------+------------------------------------+
| Test | result | meaning |
+------------------------+-----------------+------------------------------------+
| /?p=POST_ID | ✔ visible | PHP + WordPress OK |
| /permalink-test/ | ❌ Access denied | Rewrite-URLs blocked |
| /this-should-not-exist | ❌ Access denied | Apache blockt Patgs |
| /wp-content/ | blank | Directory Listing deaktiviert (ok)|
| /wp-includes/ | ❌ Forbidden | closed (normal) |
| /rewritetest.php | ❌ Access denied | critical |
+------------------------+-----------------+------------------------------------+
привет
новое обновление: рекомендация:
Только что увидел ваш пост с обновлением о тестировании URL-адресов. Какой у вас параметр «Настройки» > «Постоянные ссылки»? Это должно быть «Имя сообщения»
,,,, я активировал табличку и работал, как рекомендовано: но посмотрите, что произошло: после того, как я переключился в «Постоянных ссылках» на рекомендуемую опцию, я был заблокирован. мне не удалось перейти ни на одну страницу:
не помогло вернуть wp_options через базу данных:
я хотел вернуть правила перезаписи: через БД:
step1
UPDATE wp_options
SET option_value = ''
WHERE option_name = 'permalink_structure';
step2
UPDATE wp_options
SET option_value = ''
WHERE option_name = 'rewrite_rules';
эти вышеперечисленные шаги - они вообще не помогли - я всегда получаю обратно запрещенный доступ
id не помогал - также не помогло добавление этих строк в файл конфигурации:
define('WP_HOME', 'https://www.my_site.com');
define('WP_SITEURL', 'https://www.my_site.com');
Это проясняет один очень важный момент: (все кажется немного странным)
Код в wp-config.php не работает → Apache блокирует PHP.
Это уже не Проблема WP, ACF или CPT.
Мы на 100% на уровне Apache/сервера.
У меня строгий диагностический подход — я думаю, что администратору сервера нужно что-то протестировать или изменить на сервере.
см. предыдущий тест — результаты и так далее..:
Код: Выделить всё
+-----------------------------+----------------+--------------------------------------+
| Test |Result | Meaning; |
+-----------------------------+----------------+--------------------------------------+
| | | |
| /?p=ID | (previously) ✔ | WordPress was running; |
| /index.php | ❌ Forbidden | PHP is blocked; |
| /wp-login.php | ❌ Forbidden | WordPress is not running; |
| /rewritetest.php (physical) | ❌ Forbidden | Apache is blocking paths in general; |
| Change in wp-config.php | ❌ Ineffective | WordPress is not reachable; |
+-----------------------------+----------------+--------------------------------------+
Неправильный корень документа
Неправильный путь (очень часто!)
Глобальное правило «Требовать все запрещено»
Усиление безопасности, например:
mod_security
mod_evasive
paX / CageFS
Plesk / Ограничение ISPConfig
Файл .htaccess вообще не читается, даже если параметр AllowOverride All установлен.
администратору сервера необходимо проверить это:
ls -la /PFAD/ZU/WORDPRESS/index.php
Если этот файл не существует или отображается другой путь,
тогда VirtualHost указывает
ТЕСТ 2 – Apache-Config: неправильный путь к каталогу
очень часто (неправильный):
Требовать все отказы
или вот так:
Требовать все отказы
Тогда достаточно одной неправильной настройки, чтобы все заблокировать. хм - минимальная конфигурация - должна выглядеть так /(как-то)
Код: Выделить всё
ServerName my_site.com
DocumentRoot /PFAD/ZU/WORDPRESS
AllowOverride All
Require all granted
тест 4 (жесткий)
Код: Выделить всё
Require all granted
ТЕСТ 4 – mod_security / WAF
вероятно, активен брандмауэр
Активен ли mod_security или брандмауэр веб-приложений?
если да, временно отключите его или исключите для VHost - с
SecRuleEngine Off
чтобы Подведем итог:
- WordPress больше недоступен; даже /index.php возвращает ошибку 403
. необходимо выполнить следующие проверки: действительно ли
VirtualHost указывает на каталог, содержащий
index.php; точно ли совпадают путь и DocumentRoot;
действуют ли какие-либо правила «Требовать все запрещенные»; блокирует ли
mod_security/WAF запросы. В качестве теста установите «Требовать
все предоставленные» на корневом уровне.
Подробнее здесь: https://stackoverflow.com/questions/798 ... ges-return
Мобильная версия