Как удалить суффикс «.com» из переменной имени хоста с помощью.htaccess

Я пытаюсь создать уникальную серию перенаправлений на веб-сервере Apache (Версия сервера:Apache/2.2.15). Используя.htaccess или дополнительные модули Apache, мне нужно полностью проанализировать запрошенные URL-адреса, чтобы извлечь имена хостов без стандартного суффикса.com.

Пример:Мне нужно имя поставщика из имени хоста имя поставщика.com .

Компания, которую я поддерживаю, работает со сторонними-поставщиками и создала для каждого из них уникальные домены верхнего-уровня, которые указывают на -подкаталог-отдельного поставщика в корень документа веб-сервера.

Пример: vendorname.com/logo.jpg загружает актив, к которому также можно получить доступ по адресу parentbusinessdomain.com/vendorname/logo.jpg

Это соглашение было введено бизнесом 10 или 15 лет назад, и есть много, много поставщиков. Чего бизнес не учёл, так это необходимости поддерживать реализацию HTTPS/SSL для каждого уникального домена. Если бы они использовали под-домены, такие как vendorname.parentbusinessdomain.com, то это не было бы -проблемой. В будущем мы хотим отказаться от этого соглашения и просто размещать изображения и другие активы изhttps://parentbusinessdomain.com.

Проблема, с которой я постоянно сталкиваюсь, заключается в том, что не существует стандартной строковой операции Apache или переменной на стороне сервера-, которая представляет или извлекает имя хоста без конкретной строки «.com». Такое извлечение строк возможно с помощью внутреннего PHP или внешнего интерфейса Javascript, но, похоже, я ограничен тем, что может сделать сам.htaccess.

Аналогичный пример с настраиваемой функцией Javascript:https://stackoverflow.com/a/16934798/602514

parseURL('https://www.facebook.com/100003379429021_356001651189146');

Результат:

Object {
domain : "www.facebook.com",
host : "facebook",
path : "100003379429021_356001651189146",
protocol : "https",
subdomain : "www",
tld : "com"
}

Непредвиденные обстоятельства будут заключаться в изучении перезаписи/перенаправления URL-адресов в самом устаревшем веб-приложении, но мы надеемся, что может быть более элегантное решение с точки зрения инфраструктуры.

1
задан 5 October 2021 в 20:20
1 ответ

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

RewriteEngine On

RewriteCond %{HTTP_HOST} !^example\.com
RewriteCond %{HTTP_HOST} ^(?:www\.)?([^.]+) [NC]
RewriteRule ^ https://example.com/%1%{REQUEST_URI} [R=302,L]

Это перенаправит <vendorname>.com/<anything>на https://example.com/<vendorname>/<anything>. Где <anything>может буквально быть любым URL-путем. Любая строка запроса также сохраняется при перенаправлении.

example.com— это «домен родительского бизнеса». Первое условие просто проверяет, что запрос еще не для целевого домена.

Обратная ссылка %1соответствует "vendorname", полученному из запрошенного имени хоста vendorname.comв предыдущем CondPattern . Это позволяет использовать дополнительный субдомен www. Вы упомянули, что у вас есть только .comдомены, хотя это будет работать с любым (много-уровневым)ДВУ, просто предполагая, что нет других поддоменов (, за исключением необязательного www).

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

Что бизнес не учёл, так это необходимость поддержки реализации HTTPS/SSL для каждого уникального домена.

Просто любопытно, как редирект решает эту проблему? Является ли перенаправление только для сохранения SEO и любых сторонних обратных ссылок, которые относятся к URL-адресам формыhttp://vendorname.com/logo.jpg(Только HTTP)? (Хотя обычно вы не ожидаете обратных ссылок на logo.jpg, а этот конкретный пример на самом деле мало помогает поисковой оптимизации?)

0
ответ дан 5 October 2021 в 23:10

Теги

Похожие вопросы