#javascript
#javascript
Вопрос:
Я пытаюсь сопоставить URL-адреса по определенному пути и перенаправить их на поддомен (не спрашивайте, почему я делаю это в Javascript).
В принципе, я могу сделать это для основы, это на странице в example.com:
if (window.location.pathname == "/weddings" || window.location.pathname == "/weddings/"){
window.location.replace("https://blog.example.com/weddings/");
}
Но теперь мне нужно сделать что-то подобное для подстановочных знаков. Мне нужно сопоставить /weddings/*
и перенаправить на https://blog.example.com/weddings/*
.
Как мне сделать это с помощью Javascript?
Обновить
Кажется, это работает, но является ли это лучшим методом?
if (window.location.pathname.startsWith("/weddings/")) {
window.location.replace("https://blog.example.com" window.location.pathname);
}
Комментарии:
1. можете ли вы попробовать str.includes( «/свадьбы»)
2. @mariappank смотрите мое обновление выше, я думаю,
startsWith
оно лучше, поэтому оно не совпадает где-либо еще в URL. Мне любопытно, является ли это лучшим методом в JS. Лучше, чем какое-либо соответствие регулярным выражениям?3. да, вы можете использовать starstWith , это один из лучших методов в Javascript. если у вас есть какие-либо сомнения, пожалуйста, ознакомьтесь с руководствами по javascript
Ответ №1:
Вы можете попробовать этот пример кода.
const urlRegex = '/weddings/*';
if (window.location.pathname.match(urlRegex) !== null){
window.location.replace("https://blog.example.com/weddings/");
}
Ответ №2:
Вы могли бы использовать String.prototype.match с регулярным выражением
const regex = //weddings/(.*)/
const pathnames = [
"/wedding",
"/weddings",
"/weddings/",
"/weddings/a",
"/weddings/b",
"/weddings/c/d?e=f",
]
pathnames.forEach((pathname) => {
const match = pathname.match(regex)
if (match) {
console.log(`https://blog.example.com/weddings/${match[1]}`)
}
})
Ссылка
Ответ №3:
Вы можете упростить это с помощью URL API
Свойства такие же, как window.location
поэтому вы можете проверить, что находится в pathname
и изменить host
соответствующим образом. Затем перенаправляет на результирующий
Упрощенный пример перебора нескольких тестовых примеров для демонстрационных целей:
Для живой версии просто используйте new URL(location.href)
const samples = [
'http://example.com/food/',
'http://example.com/weddings/',
'http://example.com/weddings/nice-one',
'http://example.com/weddings/foo?param=1'
]
samples.forEach(str => {
const url = new URL(str);
if (url.pathname.startsWith('/weddings')) {
url.host = 'blog.' url.host;
}
console.log(url.href)
})