Как вы перенаправляете URL-адреса со строкой запроса на другую страницу? - PullRequest
0 голосов
/ 16 мая 2018

Этот фрагмент htaccess должен перенаправлять

mywebsite.com / продукт-категория / одежда /? OrderBy = популярность

до

mywebsite.com

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^mywebsite.com.com$ [NC]
RewriteRule ^/\?p=([0-9]+)&preview=true$ http://alt.myhost.com/?p=$1&preview=true [NC,R=301,L]

но по какой-то причине я не могу избежать / и? часть URL. Не уверен, почему это не работает ...

Я пытался сбежать?

\\? \? [?]

и я пытался убежать от /

\\/ \/ [/]

Кажется, ни один из них не работает ...

помощь!

1 Ответ

0 голосов
/ 16 мая 2018

Что-либо после ? в URL-адресе является частью URL QueryString.

Нельзя протестировать URL-адрес QueryString в шаблоне RewriteRule.вам нужно сопоставить переменную %{QUERY_STRING} в директиве RewriteCond следующим образом:

RewriteEngine on

RewriteBase /
RewriteCond %{HTTP_HOST} ^mywebsite.com.com$ [NC]
RewriteCond %{QUERY_STRING} ^orderby=popularty$ [NC]
RewriteRule ^product-category/clothing/?$ http://example.com/?  [NC,R=301,L]

Это перенаправит http://mywebsite.com/product-category/clothing/?orderby=popularty на http://example.com/.

Пустой знак вопроса в конце целевого URL (http://example.com/?) важен, поскольку он отбрасывает старую строку запроса из целевого пути / URL-адреса.

...