Перенаправить URL со строкой запроса на новый «симпатичный» URL, чтобы избежать дублирования контента - PullRequest
1 голос
/ 08 февраля 2020

Какой лучший .htaccess переписать код, чтобы заставить URL, как этот

https://www.example.com/index.php?page=report/tinytoes_mothercare

к этому?

https://www.example.com/report/tinytoes_mothercare

Мой веб-сайт уже разрешить https://www.example.com/report/tinytoes_mothercare, поэтому я хочу избегайте дублирования содержимого с указанным выше уродливым и плохим URL.

1 Ответ

2 голосов
/ 08 февраля 2020

Вы можете сделать что-то вроде следующего в верхней части .htaccess файла, до существующего переписать (который "разрешает" красивый URL ), чтобы перенаправить старый URL со строкой запроса на ваш новый pretty URL.

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^page=([\w/-]*)
RewriteRule ^index\.php$ /%1 [QSD,R=302,L]

Первое условие, которое проверяет переменную окружения REDIRECT_STATUS, гарантирует, что мы не получим перенаправьте l oop, перенаправив переписанный URL. REDIRECT_STATUS пуст при первоначальном запросе, поэтому перенаправляет только прямые запросы от клиента.

Второе условие получает необходимое значение из строки запроса page Параметр URL. Это соответствует символам a-z, A-Z, 0-9, _ (подчеркивание), / (sla sh) и - (дефис) - как в вашем примере URL. Если вам нужно соответствовать большему количеству вариаций, то класс персонажа нужно будет расширить. Затем это значение используется в строке RewriteRule замены с использованием обратной ссылки %1.

Обратите внимание, что это перенаправление 302 (временное). Измените значение на 301 (постоянное) только тогда, когда вы уверены, что оно работает нормально, во избежание проблем с кэшированием.

...