замена символов в htaccess

cscope
На сайте с 13.02.2005
Offline
525
1377

Подскажите - есть сайт, где часть страниц имеют в урле знак ~ .

Вопрос: можно ли в htaccess как то прописать, чтобы "~" автоматом заменялось на "-" ?

Т.е. чтобы юзер или бот кликнув на ссылку вида 123~456page.html автоматом попадал на 123-456page.html которой как бы не существует.

Aisamiery
На сайте с 12.04.2015
Offline
319
#1

В теории можно, но я бы посоветовал пройтись по базе (CMS) и поменял знак ~ на -

А так, сделать можно так, если на словах: Нужно выбрать все символы до знака ~ и после, получим 2 переменные $1 и $2 и соответственно правило написать реврайтнуть как $1-$2

Напрмер:

RewriteRule   ^/(.+?)~(.+?)\.html$  /$1-$2.html   [R]

В работоспособности не уверен, но суть должно объяснить

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
J
На сайте с 20.02.2014
Offline
120
jkm
#2

В принципе верно только в шаблоне исправить ^/ на ^, т.к. строка, с которой работает RewriteRule, не начинается с "/".

Это подробно описано в статье https://habrahabr.ru/company/sprinthost/blog/129560/ .

Флаг [R] даёт редирект с кодом 302.

Для редиректа 301 нужно [R=301,L].

cscope
На сайте с 13.02.2005
Offline
525
#3
Aisamiery:
В теории можно, но я бы посоветовал пройтись по базе (CMS) и поменял знак ~ на -

Там статика.

Такой вопрос а тильда ~ нормально индексируется ПС?

Aisamiery
На сайте с 12.04.2015
Offline
319
#4
cscope:
Там статика.

Если там *nix и есть доступ по ssh, то файлы можно массово переименовать при помощи утилиты sed

M
На сайте с 04.12.2013
Offline
223
#5

Если статика, то в чем вопрос? Переименуйте файлы с тильдой и поставьте какой-нить фильтр для несуществующих файлов, который бы делал редирект с заменой тильды на дефис.

Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий