маскирование / перенаправление папки в строку запроса в WordPress - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть одна страница в Wordpress, которая имеет поиск на сервере sql и представляет различный контент на основе строки запроса.
Например, я использую URL-адрес https://some -server.com / dynamic-page /? Stem = имя-содержимого-для-просмотра

Когда я захожу на страницу и меняю строку запроса, содержимое меняется. Идеально подходит.

Теперь я не хочу, чтобы строка запроса предоставлялась конечному пользователю, поэтому я пытаюсь использовать mod_rewrite, например, так:

RewriteRule ^ds/(.*) /dynamic-page/?stem=$1 [PT]

Идея заключается в том, что URL-адрес для конечного пользователя будет выглядеть следующим образом: https://some -server.com / ds / name-of-content-to-look-up

Когда я использую редирект 301, он прекрасно работает. Когда я использую внутренний редирект, это 404-е. Я пробовал несколько разных флагов в конце, но все терпят неудачу с 404.

Кто-нибудь когда-нибудь пробовал это и делал это успешно? Хотите поделиться некоторыми идеями?

Я пробовал следующее, плюс еще, ни одна из них не работает:

RewriteRule ^ds/(.*) /dynamic-page/?stem=$1 [PT]
RewriteRule ^ds/(.*) /dynamic-page/?stem=$1 [L]
RewriteRule ^ds/(.*) /dynamic-page/?stem=$1 [R,L]
RewriteRule ^ds/(.*) /dynamic-page?stem=$1 [QSA,NS,L]

RewriteCond %{REQUEST_URI} ^/ds/
RewriteRule ^ds/(.*) /index.php/dynamic-page?stem=$1 [PT]

Есть идеи?

Спасибо, Brian

1 Ответ

0 голосов
/ 13 сентября 2018

ОК, я понял это. Вместо того, чтобы делать это в Apache Redirect, я смог добавить несколько фильтров в мой файл wordpress functions.php:

function setup_filter_query_vars($query_vars)
{
    $query_vars[] = 'stem';
    return $query_vars;
}
add_filter( 'query_vars', 'setup_filter_query_vars' );


function setup_filter_rewrites()
{
    add_rewrite_rule('ds/([^/]*)/?', 'index.php?stem=$matches[1]&pagename=dynamic-page&', 'top');
}
add_action( 'init', 'setup_filter_rewrites' );  

После этого мне пришлось ссылаться на переменную querystring несколько иначе, чем на странице. Мне пришлось изменить стандарт "$ _GET [" stem "];" to "get_query_var ('stem', 1);"

Надеюсь, это поможет кому-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...