如何将子域的所有页面永久重定向到www域的子路径?

问题描述 投票:1回答:2

例如,我有这个网站:

我仍然托管那个旧站点,但是我将其移到了这里:

我希望每个旧页面都指向每个新页面。像这样的永久重定向:

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

我需要为此托管一台服务器来手动编写Python Flask应用程序,以自定义重写重定向每个URL吗?我想避免使用DNS对此进行编码。我可以使用DNS技巧吗?我使用GoDaddy来管理我的DNS。

可选:如果DNS无关,您能否提供示例Flask URL处理程序方法?是否有免费的托管服务可供我托管此烧瓶应用程序?

redirect flask url-rewriting dns cname
2个回答
0
投票

您应该能够使用应在您的Web根目录中拥有的RewriteEngine.htaccess文件进行重定向,或者使用正则表达式通过托管控制面板进行访问。由于您的措辞,我对移动的方向不太确定,以防万一,这两个方向都有一些参考。

如果您想从subdomain to folder重定向(按照您的示例,这种可能性更大),您可以执行以下操作:

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

如果要从folder to subdomain重定向,则可以执行以下操作:

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

一些其他参考:

[Edit:另一个想法取决于您所使用的部署选项/平台,而您未在问题中提及。

实际上,从另一个角度来说,GoDaddy确实允许DNS重定向。去Domain manager -> DNS -> DNS Management在右侧页面底部附近,将存在转发部分:enter image description here

在SUBDOMAIN中输入:www.neuraxle,然后在FORWARD TO中选择https://,然后输入www.neuraxio.com/en/neuraxle/,这样就可以解决问题。我会保留mod_rewrite信息以防万一。


0
投票

这应该有所帮助。

有时您需要编写一个网站,该网站可以简单地从一个域重定向到另一个域。例如,您可能已经在yourusername.pythonanywhere.com上创建了一个网站,并且该网站已变得非常流行,因此您决定升级到付费计划并将其托管在www.yourdomain.com上-但是那里有很多链接转到旧域,然后让他们继续工作。

[最佳解决方案是在您的username.pythonanywhere.com上运行一个简单的网站,该网站在收到请求后会将用户重定向到新域-因此,对http://yourusername.pythonanywhere.com/something的请求会自动重定向到http://www.yourdomain.com/something,并且依此类推。

为此,您需要在两个域的“ Web”选项卡上都有一个网站; www.yourdomain.com上的一个是您的主站点,yourusername.pythonanywhere.com上的一个是使用Python 3.6的简单Flask应用程序,在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)

或尝试以下方法

How to redirect to an external domain in Flask?

© www.soinside.com 2019 - 2024. All rights reserved.