Вы можете сделать что-то вроде следующего в верхней части .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 (постоянное) только тогда, когда вы уверены, что оно работает нормально, во избежание проблем с кэшированием.