Как добавить слово в URL - PullRequest
1 голос
/ 25 июня 2019

У меня следующий URL:

https://example.com/nl/products/stones?color_id=13

Я хочу, чтобы он был:

https://example.com/nl/products/stones/white-stones

Поэтому мне нужно удалить переменную GET и добавить «белые камни» к URL,

В настоящее время я пробовал это:

RewriteCond %{QUERY_STRING} ^color_id=[^&]+&?(.*) [NC]
RewriteRule ^ %{REQUEST_URI}?%1 [R=302,L]

Который вывел: https://example.com/nl/products/stones

Но теперь я хочу добавить "белые камни" к этому результату.Как я могу это сделать?В своем исследовании я обнаружил, что QSA должен это делать, но я не могу заставить его работать.

1 Ответ

1 голос
/ 25 июня 2019

У меня есть следующий URL: https://example.com/nl/products/stones?color_id=13 Я хочу, чтобы он был: https://example.com/nl/products/stones/white-stones

Если это просто конкретный идентификатор / URL, то вам, вероятно, нужно проверить этот конкретный идентификатор и URL в вашей директиве? Это также значительно упрощает требование.

Например:

RewriteCond %{QUERY_STRING} ^color_id=13$
RewriteRule ^nl/products/stones$ %{REQUEST_URI}/white-stones [QSD,R=302,L]

Флаг QSD (Apache 2.4+) отбрасывает исходную строку запроса из запроса.

Или, возможно, вы хотите сохранить больше параметров строки запроса? Может ли это относиться к любому URL? Это явно не упоминается в вашем вопросе, но ваши директивы намекают на это. Это потребует немного другого подхода.

В своем исследовании я обнаружил, что QSA должен сделать это

QSA (Query String Append) просто добавляет (т. Е. merges ) строку запроса из исходного запроса к любой строке запроса, которую вы назначаете в подстановке . Это не похоже на то, что вам здесь нужно.

...