Как перенаправить все страницы поддоменов в подпуть домена www? - PullRequest
1 голос
/ 20 октября 2019

У меня есть этот веб-сайт, например:

Я все еще размещаю этот старый сайт, но я переместил его сюда:

Я бы хотел, чтобы каждая старая страница указывала на каждую новую страницу. Постоянное перенаправление, подобное этому:

https://www.neuraxle.neuraxio.com/* ==> https://www.neuraxio.com/en/neuraxle/*

Нужно ли размещать сервер для этого, чтобы вручную написать приложение Python Flask, которое перенаправляет каждый URL с пользовательской перезаписью? Я хотел бы избежать кодирования этого с помощью DNS. Есть ли уловка DNS, которую я могу использовать? Я использую GoDaddy для управления своим DNS.

Необязательно: если с DNS ничего не поделаешь, можете ли вы привести пример метода URL-обработчика Flask? Есть ли у меня бесплатный хостинг для размещения этого приложения в колбе?

Ответы [ 3 ]

1 голос
/ 23 октября 2019

Вы должны иметь возможность перенаправить, используя RewriteEngine и .htaccess файл, который вы должны иметь в своем веб-корне или доступный через панель управления хостингом, используя регулярные выражения. Я немного не уверен в направлении движения из-за вашей формулировки, так что на всякий случай, вот оба направления с некоторыми ссылками.

Если вы хотите перенаправить из субдомена в папку (котораякажется более вероятным в соответствии с вашим примером) вы можете сделать что-то вроде этого:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.neuraxle\.neuraxio.\com$
RewriteCond %{REQUEST_URI} !^/en/neuraxle
RewriteRule ^(.*)$ /en/neuraxle/$1 [L,NC]

Если вы хотите перенаправить из папки на поддомен , вы можете сделать что-то вроде:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.neuraxio.com
RewriteRule ^en/neuraxle/(.*)$ http://www.neuraxle.sample.com/$1 [L,R=301]

Некоторые дополнительные ссылки:

Редактировать: с другой стороны, это зависит от варианта / платформы развертывания, которую вы использовали, и о которой вы не упомянули в своем вопросе.

И на самом деле, с другой стороны, GoDaddy действительно позволяетDNS перенаправление. Перейдите к image DNS -> DNS Management"> И в нижней части страницы справа будет раздел пересылки: enter image description here

В поле SUBDOMAIN введите: www.neuraxleи в FORWARD TO выберите https:// и введите www.neuraxio.com/en/neuraxle/, и это должно помочь. Я буду хранить mod_rewrite информацию на всякий случай.

0 голосов
/ 12 ноября 2019

Этот сработанный, принятый заслуженный ответ плохой:

@app.before_request
def redirect_to_new_domain():
    FROM_DOMAINS = ['0.0.0.0:' + str(PORT), 'https://www.neuraxio.com', 'www.neuraxio.com', "neuraxio.com"]
    SUBPATH = "/en/neuraxle"
    TO_DOMAIN = 'www.neuraxle.org'
    urlparts = urlparse(request.url)
    print(urlparts, urlparts.netloc)
    if urlparts.netloc in FROM_DOMAINS and SUBPATH in urlparts.path:
        parsed = urlparts
        parsed = parsed._replace(netloc=TO_DOMAIN)
        parsed = parsed._replace(path=urlparts.path.replace(SUBPATH, ""))
        return redirect(parsed.geturl(), code=301)

Примечание: мой собственный ответ здесь не полностью отвечает на первоначальный вопрос, но по крайней мере компилируется. Мы также нуждались в этом, как я отвечаю сейчас, за исключением того, что у нас также есть подпуть для перенаправления, а не на.

0 голосов
/ 29 октября 2019

Это должно помочь.

Иногда вам нужно написать сайт, который просто перенаправляет с одного домена на другой. Например, вы, возможно, создали веб-сайт yourusername.pythonanywhere.com, и он стал достаточно популярным, поэтому вы решили перейти на платный план и разместить его на www.yourdomain.com - но есть множество ссылок, которыеперейдите на старый домен, и вы хотите, чтобы они продолжали работать.

Лучшее решение - это создать простой веб-сайт, работающий по адресу yourusername.pythonanywhere.com, который при получении запроса перенаправляет пользователя на новыйдомен - поэтому запросы на http://yourusername.pythonanywhere.com/something автоматически перенаправляются на http://www.yourdomain.com/something, и т. д.

Для этого вам необходимо иметь веб-сайт на вкладке "Интернет" для обоихдомены;на www.yourdomain.com - ваш главный сайт, а на yourusername.pythonanywhere.com - простое приложение Flask, использующее Python 3.6, со следующим кодом в файле flask_app.py:

from flask import Flask, redirect, request

app = Flask(__name__)

from urllib.parse import urlparse, urlunparse

FROM_DOMAIN = "yourusername.pythonanywhere.com"
TO_DOMAIN = "www.yourdomain.com"

@app.before_request
def redirect_to_new_domain():
    urlparts = urlparse(request.url)
    if urlparts.netloc == FROM_DOMAIN:
        urlparts_list = list(urlparts)
        urlparts_list[1] = TO_DOMAIN
        return redirect(urlunparse(urlparts_list), code=301)

ИЛИ ПОПРОБУЙТЕ НИЖЕ МЕТОД

Как перенаправить на внешний домен в Flask?

...