htaccess получает параметр из URL и перенаправляет - PullRequest
2 голосов
/ 12 мая 2019

Я хочу перенаправить страницу с результатами поиска на новую. Старый URL выглядит так:

/תוצאות_חיפוש:search_keyword

И мне нужно, чтобы это выглядело так:

/?s=search_keyword&post_type=product

search_keyword - это то, что ищет пользователь, то есть термин, который он ищет. Это означает, что это не должно быть изменено. Например, если кто-то ищет «рубашки», старый URL будет выглядеть так:

/תוצאות_חיפוש:shirts

Пока новый будет выглядеть так:

/?s=shirts&post_type=product

Я пробовал несколько решений, которые я нашел здесь, в StackOverflow, но ни одно из них не сработало.

Как я могу создать это перенаправление?

Ответы [ 2 ]

1 голос
/ 12 мая 2019

Вы должны захватить строку поиска и использовать ее в URL замещения

RewriteRule ^תוצאות_חיפוש:(.+)$ /?s=$1&post_type=product [L]

См. RewriteRule и Apache mod_rewrite Введение для получения подробной информации.


Хотя я никогда не видел ничего кроме ASCII в файле .htaccess, я только что проверил это в своей тестовой среде.Несмотря на то, что Apache регистрирует этот запрос как

172.17.0.1 - - [12 / May / 2019: 14: 58: 39 +0000] "GET /% D7% AA% D7% 95% D7% A6% D7% 90% D7% 95% D7% AA_% D7% 97% D7% 99% D7% A4% D7% 95% D7% A9: футболки HTTP / 1.1 "200 268" - "" Mozilla / 5.0 (X11; Linux x86_64) AppleWebKit / 537.36 (KHTML, как Gecko) Ubuntu Chromium / 73.0.3683.86 Chrome / 73.0.3683.86 Safari / 537.36 "

в mod_rewrite RewriteRule получает его как декодированный תוצאות_חיפוש:shirts

0 голосов
/ 12 мая 2019

Попробуйте использовать это:

url_string_name.replace(@"^\/תוצאות_חיפוש:", "/?s=");

Это заменит начало URL.И тогда:

url_string_name.replace(@"$", "&post_type=product");

это заменит конец URL;^ означает начало строки, $ означает конец строки.Удачи!

...