Перенаправление подстановочных знаков с помощью javascript?

#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]}`)
  }
})  


Ссылка

String.prototype.match()

Ответ №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)
})