У меня есть правило перезаписи .htaccess, которое должно быть простым, но не работает.
RewriteRule ^advisors/(.+)/about/ /advisor_master/about/?advisor=$1 [NC,L]
Это должно отобразить URL, например:
/ advisors / stevens-group / about / до / advisor_master / about /? advisor = stevens-group
Однако на странице отображается ошибка 404.
Теперь, если яперейдите по URL / advisor_master / about /? advisor = stevens-group напрямую, он отображается нормально.
Устранение неполадок, которые я уже пробовал:
Если я обновлю правило перезаписи, чтобы оно было без строки запроса в целевом пути, например:
RewriteRule ^advisors/(.+)/about/ /advisor_master/about/ [NC,L]
, оно не отображает ошибку 404, а вместо этого загружает страницу правильно, за исключением случаев, когда данные строки запроса отсутствуют,Конечно, мне нужны эти данные строки запроса, так что это не достаточно хорошо.
Я также попробовал следующее в моем файле WordPress functions.php:
function init_custom_advisor_rewrite() {
add_rewrite_rule(
'^advisors/([^/]+)/about/',
'index.php?page_id=1049&advisor=$matches[1]',
'top' );
}
add_action( 'init', 'init_custom_advisor_rewrite' );
Я заново сохранилнастройки постоянной ссылки.Это тоже не работает, все равно отображается страница 404.Если я открою URL в браузере напрямую:
/ index.php? Page_id = 1049 & advisor = stevens-group
Это перенаправит на правильный шаблон пользовательской страницы:
/advisor_master / about /? advisor = stevens-group
и работает как надо.Кроме того, если я удаляю строку запроса из функции add_rewrite_rule (), как в моем файле .htaccess, она также работает там.Однако мне нужна эта строка запроса для динамических данных.
Редактировать: Другая идея состояла в том, чтобы посмотреть, работают ли значения строки запроса при непосредственном доступе к файлу сценария, например, /test.php?advisor=stevens-group вне WordPress,Это работает правильно, и строка запроса доступна.Таким образом, это означает, что проблема связана с постоянной связью WP или структурой сопоставления.
Установка выполняется на Apache2 на сервере VirtualMin, работающем под управлением Ubunutu 18.
Вот параметры каталога apache:
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,Sy$
Require all granted
AddType application/x-httpd-php .php
Есть предложения?